當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java Constructor newInstance()用法及代碼示例


構造函數類的newInstance()方法用於創建和初始化此構造函數的新實例,並將初始化參數作為參數傳遞給此方法。展開每個參數以匹配原始形式參數,並且必要時對原始參數和引用參數都進行方法調用轉換。

如果構造函數的形式參數數量為0,則提供的參數長度為0或為null。如果構造函數正常完成,則返回新創建並初始化的實例。

用法:


public T newInstance(Object... initargs)
  throws InstantiationException, IllegalAccessException,
         IllegalArgumentException, InvocationTargetException

參數:此方法接受initargs作為參數,它是將作為參數傳遞給構造函數調用的對象數組。基本類型的值被包裝在適當類型的包裝對象中(例如,Float中的float)。

返回值:此方法返回一個新對象,該對象是通過調用該對象表示的構造函數而創建的。

異常:此方法引發以下異常:

  • IllegalAccessException:如果此Constructor對象正在強製執行Java語言訪問控製,而基礎構造函數不可訪問。
  • IllegalArgumentException:如果實際參數和形式參數的數量不同;如果原始參數的展開轉換失敗;或者在可能的解包之後,無法通過方法調用轉換將參數值轉換為相應的形式參數類型;或者如果此構造函數與枚舉類型有關。
  • InstantiationException:如果聲明基礎構造函數的類表示抽象類。
  • InvocationTargetException:如果基礎構造函數引發異常。
  • ExceptionInInitializerError:如果此方法引發的初始化失敗。

以下示例程序旨在說明newInstance()方法:
示例1:

// Java program to demonstrate 
// Constructor.newInstance() method 
  
import java.lang.reflect.Constructor; 
import java.lang.reflect.InvocationTargetException; 
  
public class GFG { 
  
    public static void main(String... args) 
        throws InstantiationException, 
               IllegalAccessException, 
               IllegalArgumentException, 
               InvocationTargetException 
    { 
  
        // An array of constructor 
        Constructor[] constructor 
            = Test.class.getConstructors(); 
  
        // Apply newInstance method 
        Test sampleObject 
            = (Test)constructor[0].newInstance(); 
  
        System.out.println(sampleObject.value); 
    } 
} 
  
class Test { 
  
    String value; 
  
    public Test() 
    { 
        System.out.println("New Instance is created"); 
        value = "New Instance"; 
    } 
}

輸出:

New Instance is created
New Instance

示例2:

// Java program to demonstrate 
// Constructor.newInstance() method 
  
import java.lang.reflect.Constructor; 
import java.lang.reflect.InvocationTargetException; 
  
public class GFG { 
  
    public static void main(String... args) 
        throws InstantiationException, 
               IllegalAccessException, 
               IllegalArgumentException, 
               InvocationTargetException 
    { 
  
        // an array of constructor 
        Constructor[] constructor 
            = Test.class.getConstructors(); 
  
        // apply newInstance method 
        Test sampleObject 
            = (Test)constructor[0] 
                  .newInstance("New Field"); 
  
        System.out.println(sampleObject.getField()); 
    } 
} 
  
class Test { 
  
    private String field; 
  
    public Test(String field) 
    { 
        this.field = field; 
    } 
  
    public String getField() 
    { 
        return field; 
    } 
  
    public void setField(String field) 
    { 
        this.field = field; 
    } 
}

輸出:

New Field

參考:https://docs.oracle.com/javase/10/docs/api/java/lang/reflect/Constructor.html#newInstance(java.lang.Object…)



相關用法


注:本文由純淨天空篩選整理自AmanSingh2210大神的英文原創作品 Constructor newInstance() method in Java with Examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。