構造函數類的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…)
相關用法
- Java Constructor hashCode()用法及代碼示例
- Java Constructor isVarArgs()用法及代碼示例
- Java Constructor getDeclaringClass()用法及代碼示例
- Java Constructor getName()用法及代碼示例
- Java Constructor toString()用法及代碼示例
- Java Constructor getAnnotatedReceiverType()用法及代碼示例
- Java Constructor isSynthetic()用法及代碼示例
- Java Constructor getAnnotation()用法及代碼示例
- Java Constructor getAnnotatedReturnType()用法及代碼示例
- Java Constructor getTypeParameters()用法及代碼示例
- Java Constructor toGenericString()用法及代碼示例
- Java Constructor getGenericExceptionTypes()用法及代碼示例
- Java Constructor getParameterAnnotations()用法及代碼示例
- Java Constructor getDeclaredAnnotations()用法及代碼示例
注:本文由純淨天空篩選整理自AmanSingh2210大神的英文原創作品 Constructor newInstance() method in Java with Examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。