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
中的float
)
返回值
- 通過調用此對象代表的構造函數創建的新對象。
例外/異常
- IllegalAccessException - 如果此構造方法對象正在強制執行Java語言訪問控制,並且底層構造函數無法訪問。
- IllegalArgumentException - 如果實際和形式參數的數量不同; 如果原始參數的解包轉換失敗; 或者如果在可能的展開之後,通過方法調用轉換,參數值不能轉換為相應的形式參數類型; 如果此構造函數屬於枚舉類型。
- InstantiationException - 如果聲明底層構造函數的類表示抽象類。
- InvocationTargetException - 如果底層構造函數引發異常。
- ExceptionInInitializerError - 如果由此方法引發的初始化失敗。
例子
以下示例顯示了java.lang.reflect.Constructor.newInstance(Object... initargs)
方法的用法。
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
public class NewInstance {
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;
}
}
讓我們編譯並運行上面的程式,這將產生以下結果 -
false
以下是糾正/補充內容:
輸出值為data而不是false------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 提交時間:2019-09-20