在Java反射中有没有办法调用getMethod或其他一些如果找不到方法就不会抛出异常的方法?也许只返回一个null?
我正在通过一个应用程序来减少预期的异常,这似乎是一个可能的候选人。
答案 0 :(得分:3)
如果你找不到匹配项,你可以迭代getMethods()并返回null
。
答案 1 :(得分:1)
根据您的应用需求,可能适合使用getMethods()。它返回类中所有已定义方法的数组。您可以按名称映射返回的方法,或者根据需要使用它们。 但请注意,这可能比仅在您需要的方法上调用getMethod()更慢,并最终捕获异常。在这种情况下,一些缓存可能有所帮助。
答案 2 :(得分:0)
如果您还没有阅读此article,请查看。
Android开发人员的网站似乎没有使用try-catch
块来实现此效果的问题......我认为你应该没问题。
如果主要关注多个SDK之间的兼容性,您可以通过将代码包装在if-else
块中来避免反射,如下所示:
if (currentAPIVersion >= android.os.Build.VERSION_CODES.FROYO){
// Do something for froyo and above versions
} else{
// do something for phones running an SDK before froyo
}