趁年轻,成为最好的自己。Happy Coding!
© 2014 - 2022. All rights reserved.
使用反射调用非公开的方法有时能解决许多问题,如果方法的参数是数组时类型该怎么传递呢?这里找到了一种方法记录一下
比如:
class A{ private void sayHello(String[] names){ //... System.out.println("sayHello invoked"); } } 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});
这里有两个地方需要注意
异常,比较奇怪,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)