Java 不引起异常的反射getMethod

Java 不引起异常的反射getMethod,java,reflection,Java,Reflection,在Java反射中有没有一种方法可以调用getMethod,或者在找不到方法时不会引发异常的其他方法?也许只是返回一个空值 我正在通过一个应用程序来减少预期的异常,这似乎是一个可能的候选者。如果您还没有读过这篇文章,请查看它 Android开发者的网站似乎没有使用try-catch块来实现这种效果的问题。。。我想你应该没事 如果跨多个SDK的兼容性是您主要关心的问题,那么您可以通过将代码包装在If-else块中来避免所有反射,如下所示: if (currentAPIVersion >= an

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


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

如果您还没有读过这篇文章,请查看它

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
}

如果你还没有读过这篇文章,请查看

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
}

如果没有找到匹配项,可以迭代getMethods()并返回
null

如果没有找到匹配项,可以迭代getMethods()并返回
null

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

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

当然,如果您用自己的方法包装调用,您可以做任何您想做的事情。
try catch
块有什么问题吗?也许我错了,但是预期的异常感觉像是代码味道。我知道异常是语言的一部分。在您的假设下,为什么检查异常首先存在?当然,如果您用自己的方法包装调用,您可以做任何您想做的事情。
try-catch
块有什么问题吗?也许我错了,但有预期的异常感觉像是代码味道。IMHO异常是语言的一部分。在您的假设下,为什么首先存在检查异常?我将使用此解决方案和缓存。谢谢。反射API也使用它自己的软引用缓存。我将使用这个解决方案和缓存。谢谢。反射API也使用它自己的软引用缓存。@Peter:很抱歉这个答案非常相似,只是没有把你的读成写我的…@Peter:很抱歉这个答案非常相似,只是没有把你的读成写我的。。。