Javareflect-method-invoke
提供:Dev Guides
java.lang.reflect.Method.invoke()メソッドの例
説明
- java.lang.reflect.Method.invoke(Object obj、Object … args)*メソッドは、指定されたパラメーターを使用して、指定されたオブジェクトで、このMethodオブジェクトで表される基になるメソッドを呼び出します。 個々のパラメーターは、プリミティブな仮パラメーターと一致するように自動的にアンラップされ、プリミティブおよび参照パラメーターの両方が、必要に応じてメソッド呼び出し変換の対象となります。
宣言
以下は* java.lang.reflect.Method.invoke(Object obj、Object …の宣言です。 args)*メソッド。
public Object invoke(Object obj, Object... args)
throws IllegalAccessException, IllegalArgumentException,
InvocationTargetException
パラメーター
- obj -基になるメソッドの呼び出し元のオブジェクト。
- args -メソッド呼び出しに使用される引数。
返品
パラメータargsを使用して、このオブジェクトが表すメソッドをobjにディスパッチした結果。
例外
- IllegalAccessException -このMethodオブジェクトがJava言語アクセス制御を実施しており、基になるメソッドにアクセスできない場合。
- IllegalArgumentException -メソッドがインスタンスメソッドであり、指定されたオブジェクト引数が、基になるメソッド(またはそのサブクラスまたは実装者)を宣言するクラスまたはインターフェイスのインスタンスではない場合。実パラメータと仮パラメータの数が異なる場合。プリミティブ引数のアンラップ変換が失敗した場合;または、可能なラップ解除の後、メソッド呼び出し変換によってパラメーター値を対応する仮パラメーター型に変換できない場合。
- InvocationTargetException -基になるメソッドが例外をスローする場合。
- NullPointerException -指定されたオブジェクトがnullであり、メソッドがインスタンスメソッドである場合。
- ExceptionInInitializerError -このメソッドによって引き起こされた初期化が失敗した場合。
例
次の例は、java.lang.reflect.Method.invoke(Object obj、Object … args)メソッド。
package com.finddevguides;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class MethodDemo {
public static void main(String[] args)
throws IllegalAccessException, IllegalArgumentException, InvocationTargetException {
Method[] methods = SampleClass.class.getMethods();
SampleClass sampleObject = new SampleClass();
methods[1].invoke(sampleObject, "data");
System.out.println(methods[0].invoke(sampleObject));
}
}
class SampleClass {
private String sampleField;
public String getSampleField() {
return sampleField;
}
public void setSampleField(String sampleField) {
this.sampleField = sampleField;
}
}
上記のプログラムをコンパイルして実行すると、次の結果が生成されます-
data