使用反射调用重载的构造函数
示例:通过传递相关参数来调用不同的构造函数
import java.lang.reflect.*;
class NewInstanceWithReflection{
public NewInstanceWithReflection(){
System.out.println("Default constructor");
}
public NewInstanceWithReflection( String a){
System.out.println("Constructor :String => "+a);
}
public static void main(String args[]) throws Exception {
NewInstanceWithReflection object = (NewInstanceWithReflection)Class.forName("NewInstanceWithReflection").newInstance();
Constructor constructor = NewInstanceWithReflection.class.getDeclaredConstructor( new Class[] {String.class});
NewInstanceWithReflection object1 = (NewInstanceWithReflection)constructor.newInstance(new Object[]{"StackOverFlow"});
}
}
输出:
Default constructor
Constructor :String => StackOverFlow
说明:
- 使用
Class.forName
创建类的实例:它调用默认构造函数 - 通过传递参数类型
Class array
来调用类的getDeclaredConstructor
- 获取构造函数后,通过传递参数值为
Object array
来创建newInstance