如何使用反射来调用带有String数组作为参数

时间:2017-08-08 18:33:50

标签: java reflection

我尝试使用以下代码调用私有方法。但我得到一个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作为参数的方法,它工作正常。

非常感谢

1 个答案:

答案 0 :(得分:1)

编译器将String数组视为varargs。然后你的invoke方法看到2个String作为参数而不是String数组传递。