例如:
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传递构造函数。
请帮助。
答案 0 :(得分:81)
您需要说明要使用哪个构造函数传递参数。
Car c = Car.class.getConstructor(String.class).newInstance("Lightning McQueen");
答案 1 :(得分:7)
如果您正在处理超级/子类,或者由于某种原因不确切知道要实例化哪个类,则还需要forName()方法:
(ClassName) Class.forName([name_of_the_class])
.getConstructor([Type]).newInstance([Constructor Argument]);
这假定name_of_the_class是传递的变量。 此外,如果类在一个包中,即使已导入该包,您仍然必须在forName()中明确规定包(我想,我对这一切都是新手)。
Class.forName([name_of_package].[name_of_class])