尝试通过其签名(名称和参数类型列表)查找方法时,将得到单个结果:
Method java.lang.Class.getMethod(String name, Class<?>... parameterTypes)
让我知道parameterTypes的长度以及除一个参数类型外的所有参数类型,因为在运行时传递给我的参数为null时,我无法派生该参数的类。 所以我想通过方法名称和已知参数类型的数组来获取所有方法。如果发生这种情况,那么结果将是单个方法,否则将其调用,否则将引发异常。
是否有一种不错的方法可以做到这一点,而不必重新实现JDK的'getMethod'?
答案 0 :(得分:0)
获取这种方法的唯一方法是使用getMethods()
并手动将其过滤掉,这并不难,对于每种方法只需进行简单的检查。
但是,如果您只需要调用方法,则可以使用更多的动态方式(但是它也会变慢,因为您无法缓存Method
实例)
public static void main(String[] args) throws Exception {
Expression someMethod = new Expression(Tezd.class, "someMethod", new Object[]{1, 2, null, "huh"});
someMethod.execute();
System.out.println(someMethod.getValue());
}
public static String someMethod(int a, int b, Object object, String str) {
return a + ", " + b + ", " + object + ", " + str;
}
第一个参数是目标,我使用了类,因为这是静态方法,对于普通方法,只需在此处传递对象即可。
java.beans.Expression
用来获取匹配方法的可悲方法不是公开的。