2

Java 反射中是否有一种方法可以调用 getMethod 或其他在找不到方法时不会引发异常的方法?也许只是返回一个空值?

我正在通过一个应用程序来减少预期的异常,这似乎是一个可能的候选者。

4

3 回答 3

3

null如果找不到匹配项,您可以遍历 getMethods() 并返回。

于 2012-05-01T19:33:35.327 回答
1

根据您的应用程序需求,可能适合使用getMethods()。它返回类中所有已定义方法的数组。您可以按名称映射返回的方法,或随意使用它们。但是请注意,这可能比仅在您需要的方法上调用 getMethod() 并最终捕获异常要慢。在这种情况下,一些缓存可能会有所帮助。

于 2012-05-01T19:37:42.363 回答
0

如果您还没有阅读这篇文章,请查看。

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
}
于 2012-05-01T19:30:14.687 回答