我尝试使用以下代码调用私有方法。但我得到一个IllegalArgumentException。
java.lang.IllegalArgumentException:参数数量错误
代码是:
Method method = MyClass.class.getDeclaredMethod("myMethod", String[].class);
method.setAccessible(true);
method.invoke(myClassInstance, new String[] { "a", "b" });
被调用方法的签名是:
private void myMethod(String[] args)
我尝试了相同的示例,但是使用String作为参数的方法,它工作正常。
非常感谢
答案 0 :(得分:1)
编译器将String数组视为varargs。然后你的invoke方法看到2个String作为参数而不是String数组传递。