我正在使用 Java 反射进行测试,并尝试根据参数的类型将重载方法应用于参数。
但是,即使我尝试获取的方法是公开的,我也有 NoSuchMethodException。当我使用 getDeclaredMethod 时,仍然会出现此异常。
这是主程序
public class Test {
public static void main(Object... inputs){
InputManipulation test = new InputManipulation();
for (Object input: inputs){
Class ownerClass = test.getClass();
Class inputClass = input.getClass();
Method method = ownerClass.getDeclaredMethod("add", inputClass);
method.invoke(test, "Testing reflection");
}
}
}
这是自定义的 InputManipulation 类
public class InputManipulation {
Integer total;
public InputManipulation(){this.total = 0;}
public void add(Integer num){this.total += num;}
public void add(String str){System.out.println(str);}
}
提前致谢!
我现在将Test类更改如下..但问题仍然存在。
public class Test {
public static void main(String[] args){
Test testExample = new Test();
testExample.testMethod("String1", 1, "String2");
}
public void testMethod(Object... inputs){
InputManipulation test = new InputManipulation();
for (Object input: inputs){
Class ownerClass = test.getClass();
Class inputClass = input.getClass();
Method method = ownerClass.getDeclaredMethod("add", inputClass);
method.invoke(test, "Testing reflection");
}
}
}
正如另一篇文章所建议的那样,我还尝试将 inputClass 放入 Class 数组中,但它没有帮助..