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