如何使用reflection在构造函数中使用参数创build类的实例?
例如:
public class Test { public static void main(String[] args) throws Exception { Car c= (Car) Class.forName("Car").newInstance(); System.out.println(c.getName()); } } class Car { String name = "Default Car"; String getName(){return this.name;} }
清除代码。
但是,如果我用params添加构造函数,有些像这样:
public Car(String name) {this.name = name;}
我看到: java.lang.InstantiationException
所以,不,我不知道,如何通过params构造函数。
请帮忙。
你需要说你想使用哪个构造函数传递它的参数。
Car c = Car.class.getConstructor(String.class).newInstance("Lightning McQueen");
如果您正在处理超类/子类,或者出于某种原因不知道将要实例化什么类,则还需要forName()方法:
(ClassName) Class.forName([name_of_the_class]) .getConstructor([Type]).newInstance([Constructor Argument]);
这假设name_of_the_class是一个传递的variables。 另外,如果这个类在一个包里,那么即使这个包已经被导入了,你仍然必须在forName()中明确地规定这个包(我想我是新来的)。
Class.forName([name_of_package].[name_of_class])