如何检查 Java 中的类是否存在方法? try {...} catch {...}
声明是好的做法吗?
原文由 jrtc27 发布,翻译遵循 CC BY-SA 4.0 许可协议
反射 API 在使用 Class.getMethod(...)
函数时抛出 NoSuchMethodException
函数。
否则 Oracle 有一个关于反射的很好的教程 http://download.oracle.com/javase/tutorial/reflect/index.html
原文由 Jaka 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
我假设您想检查方法
doSomething(String, Object)
。你可以试试这个:
这是行不通的,因为该方法将在编译时解析。
你真的需要为它使用反射。而且,如果您可以访问要调用的方法的源代码,则最好使用要调用的方法创建一个接口。
[更新] 附加信息是:有一个接口可能存在两个版本,一个旧版本(没有想要的方法)和一个新版本(有想要的方法)。基于此,我提出以下建议:
这段代码测试接口中是否存在方法
getAllowedNether
,所以实际对象是否有该方法并不重要。如果必须经常调用方法
getAllowedNether
并且因此遇到性能问题,我将不得不考虑更高级的答案。这个现在应该没问题。