我在这里搜索了所有涉及“反射”的问题,这些问题使用类名称的String实例化了一个参数化对象,但由于Java无法将Constructor识别为类,因此无法使其正常工作。

Class myClass = Class.forName("MyClass");

Class[] types = {Double.TYPE, String.TYPE};
Constructor constructor = myClass.getConstructor(types);

Object[] parameters = {1.0, "hello"};
Object instanceOfMyClass = constructor.newInstance(parameters);


这是我尝试使用的代码,我也尝试过以其他方式编写参数,但是这些参数与问题无关(请回复Constructor类问题)。我该如何工作?

最佳答案

myClass.getConstructor(types)中,您需要传递类对象。因此,您需要声明String.class,当您编写Double.TYPE时,它用于原始数据类型。请参考此代码

    Class myClass = Class.forName("com.citi.MyClass");

    Constructor cons= myClass.getConstructor(Double.TYPE, String.class);

    Object[] param = {1.0, "Hello"};
    Object instanceOfMyClass = cons.newInstance(1.0, "Hello");

10-07 18:56
查看更多