java通过反射找到一个签名不完全已知的方法
当您试图通过方法的签名(名称和参数类型列表)查找方法时,将得到单一结果:
Method java.lang.Class.getMethod(String name, Class<?>... parameterTypes)
假设我知道parameterTypes length和除一个参数类型之外的所有参数类型,因为在运行时传递给我的参数为null时,我无法派生该参数的类
所以我想通过方法名和已知参数类型的数组来获取所有方法。如果发生这种情况,结果将是单一方法,我将调用它,否则我将抛出一个异常
有没有一种不重新实现JDK的“getMethod”的好方法
# 1 楼答案
获得这种方法的唯一方法是使用
getMethods()
并手动过滤掉它,这并不难,只需对每个方法进行一些简单的检查但是,如果您只需要调用一个方法,您可以使用更动态的方式(但它也会更慢,因为您无法缓存
Method
实例)第一个参数是一个目标,我使用类,因为这是静态方法,对于普通方法,只需在这里传递对象
遗憾的是,
java.beans.Expression
用于获取匹配方法的方法不是公共的