使用反射和数组参数构造类的异常



运行以下代码:

public class Test {
    public Test(Object[] test){
    }
    public static void main(String[] args) throws Exception{
            Constructor cd = Test.class.getConstructor(Object[].class);
            Object[] objs = {1, 2, 3, 4, 5, 6, 7, 8};
            cd.newInstance(objs);
    }
}

我得到错误:

Exception in thread "main" java.lang.IllegalArgumentException: wrong number of arguments
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
    at groupd.poker.utils.tests.ai.nqueens.Test.main(Test.java:17)

为什么会这样?

构造函数类的newInstance()方法接受一个对象数组。数组中的每一项都是要调用的构造函数的一个参数。你的类的构造函数接受一个对象数组所以你需要在传递给新实例方法

的数组中包含一个对象数组
public static void main(String[] args) throws Exception{
            Constructor cd = Test.class.getConstructor(Object[].class);
            Object[] objs = {1, 2, 3, 4, 5, 6, 7, 8};
            Object[] passed = {objs};
            cd.newInstance(passed);
    }

相关内容

  • 没有找到相关文章

最新更新