class X {
public void test(int... args) {
}
}
main() {
Method m = X.class.getMethod("test", int[].class);
m.invoke(new X(), 1, 2, 3); //这里会报错
}
由于java的反射机制不支持可变参数,所以Method.invoke方法中传入可变参数则会报错。
解决方法:将上述的m.invoke(new X(), 1, 2, 3);换成m.invoke(new X(), new int[]{1, 2, 3});