use*_*011 41 java reflection class
例如:
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;}
}
Run Code Online (Sandbox Code Playgroud)
明确的代码.
但是,如果我用params添加构造函数,有些像这样:
public Car(String name)
{this.name = name;}
Run Code Online (Sandbox Code Playgroud)
我知道了: java.lang.InstantiationException
所以,不,我不知道,如何通过params传递构造函数.
请帮忙.
Pet*_*rey 86
您需要说明要使用哪个构造函数传递参数.
Car c = Car.class.getConstructor(String.class).newInstance("Lightning McQueen");
Run Code Online (Sandbox Code Playgroud)
如果您正在处理超级/子类,或者由于某种原因不确切知道要实例化哪个类,那么还需要forName()方法:
(ClassName) Class.forName([name_of_the_class])
.getConstructor([Type]).newInstance([Constructor Argument]);
Run Code Online (Sandbox Code Playgroud)
这假设name_of_the_class是传递的变量.此外,如果类在一个包中,即使已导入该包,您仍然必须在forName()中明确规定包(我想,我对这一切都是新手).
Class.forName([name_of_package].[name_of_class])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
54215 次 |
| 最近记录: |