Javareflect-constructor-newinstance
提供:Dev Guides
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* -コンストラクター呼び出しへの引数として渡されるオブジェクトの配列。プリミティブ型の値は、適切な型のラッパーオブジェクトにラップされます(例: フロートのフロート)
返品
このオブジェクトが表すコンストラクターを呼び出して作成された新しいオブジェクト。
例外
- IllegalAccessException -このConstructorオブジェクトがJava言語アクセス制御を実施しており、基礎となるコンストラクタにアクセスできない場合。
- IllegalArgumentException -実パラメータと仮パラメータの数が異なる場合。プリミティブ引数のアンラップ変換が失敗した場合;または、可能なラップ解除の後、メソッド呼び出し変換によってパラメーター値を対応する仮パラメーター型に変換できない場合。このコンストラクタが列挙型に関係する場合。
- InstantiationException -基礎となるコンストラクタを宣言するクラスが抽象クラスを表す場合。
- InvocationTargetException -基になるコンストラクターが例外をスローした場合。
- ExceptionInInitializerError -このメソッドによって引き起こされた初期化が失敗した場合。
例
次の例は、java.lang.reflect.Constructor.newInstance(Object … initargs)メソッド。
package com.finddevguides;
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