- java.lang.reflect 包類
- java.lang.reflect - 首頁
- java.lang.reflect - AccessibleObject
- java.lang.reflect - Array
- java.lang.reflect - Constructor<T>
- java.lang.reflect - Field
- java.lang.reflect - Method
- java.lang.reflect - Modifier
- java.lang.reflect - Proxy
- java.lang.reflect 包補充
- java.lang.reflect - 介面
- java.lang.reflect - 異常
- java.lang.reflect - 錯誤
- java.lang.reflect 有用資源
- java.lang.reflect - 快速指南
- java.lang.reflect - 有用資源
- java.lang.reflect - 討論
java.lang.reflect.Constructor.newInstance() 方法示例
描述
java.lang.reflect.Constructor.newInstance(Object... initargs) 方法使用此 Constructor 物件表示的建構函式來建立和初始化建構函式宣告類的新的例項,並使用指定的初始化引數。各個引數會自動解包以匹配原始形式引數,原始引數和引用引數都會根據需要進行方法呼叫轉換。
宣告
以下是 java.lang.reflect.Constructor.newInstance(Object... initargs) 方法的宣告。
public T newInstance(Object... initargs) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException
引數
initargs − 要作為引數傳遞給建構函式呼叫的物件的陣列;原始型別的值封裝在相應型別的包裝物件中(例如,浮點數在 Float 中)。
返回值
透過呼叫此物件表示的建構函式建立的新物件。
異常
IllegalAccessException − 如果此 Constructor 物件正在強制執行 Java 語言訪問控制,並且底層建構函式不可訪問。
IllegalArgumentException − 如果實際引數和形式引數的數量不同;如果原始引數的解包轉換失敗;或者,在可能的解包之後,引數值無法透過方法呼叫轉換轉換為相應的形式引數型別;如果此建構函式與列舉型別有關。
InstantiationException − 如果宣告底層建構函式的類表示抽象類。
InvocationTargetException − 如果底層建構函式丟擲異常。
ExceptionInInitializerError − 如果此方法引發的初始化失敗。
示例
以下示例演示了 java.lang.reflect.Constructor.newInstance(Object... initargs) 方法的用法。
package com.tutorialspoint;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
public class ConstructorDemo {
public static void main(String[] args) throws NoSuchMethodException,
SecurityException, InstantiationException, IllegalAccessException,
IllegalArgumentException, InvocationTargetException {
Constructor constructor = SampleClass.class.getConstructor(String.class);
SampleClass sampleObject = (SampleClass)constructor.newInstance("data");
System.out.println(sampleObject.getSampleField());
}
}
class SampleClass {
private String sampleField;
public SampleClass(){
}
public SampleClass(String sampleField){
this.sampleField = sampleField;
}
public String getSampleField() {
return sampleField;
}
public void setSampleField(String sampleField) {
this.sampleField = sampleField;
}
}
讓我們編譯並執行上述程式,這將產生以下結果:
data
java_reflect_constructor.htm
廣告