String[] names = new String[]{"A", "B", "C"}; Method sayHello = A.class.getDeclaredMethod("sayHello", String[].class); sayHello.setAcess(true); sayHello.invoke(new A(), new Object[]{names});

这里有两个地方需要注意

  • A.class.getDeclaredMethod时后面的参数是数组,用加[];
  • sayHello.invoke调用时直接传一个String[]实例会报异常,需要再次用Object[]包装一下;
  • 异常,比较奇怪,google后找到上面的解决方法:

    java.lang.IllegalArgumentException: argument 1 should have type 	java.lang.String[], got java.lang.String
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)