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中的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
上一篇: java.lang.reflect Constructor<T>類 下一篇: java.lang.reflect.Field類