使用反射呼叫過載的建構函式
示例:通過傳遞相關引數來呼叫不同的建構函式
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