我在这里搜索了所有涉及“反射”的问题,这些问题使用类名称的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");