如何使用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])