パッケージ org.springframework.util

クラス MethodInvoker

java.lang.ObjectSE
org.springframework.util.MethodInvoker
既知の直属サブクラス
ArgumentConvertingMethodInvoker

public class MethodInvoker extends ObjectSE
静的または非静的にかかわらず、宣言的な方法で呼び出すメソッドを指定できるヘルパークラス。

使用方法: "targetClass "/"targetMethod" " または "targetObject"/"targetMethod" " を指定し、オプションで引数を指定して、呼び出し元を準備します。その後、メソッドを何度でも呼び出して、呼び出し結果を取得できます。

導入:
19.02.2004
作成者:
Colin Sampaleanu, Juergen Hoeller
関連事項:
  • フィールドサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    protected ClassSE<?>
  • コンストラクターのサマリー

    コンストラクター
    コンストラクター
    説明
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    protected MethodSE
    指定された引数に指定された名前を持つ一致するメソッドを見つけます。
    メソッド呼び出しの引数を返します。
    呼び出される準備済みの Method オブジェクトを返します。
    ターゲットメソッドを呼び出すターゲットクラスを返します。
    呼び出されるメソッドの名前を返します。
    ターゲットメソッドを呼び出すターゲットオブジェクトを返します。
    static int
    getTypeDifferenceWeight(ClassSE<?>[] paramTypes, ObjectSE[] args)
    候補メソッドの宣言されたパラメーター型と、このメソッドが呼び出されることになっている引数の特定のリストとの間の一致を判断するアルゴリズム。
    指定されたメソッドを呼び出します。
    boolean
    この呼び出し元がすでに準備されているかどうか、つまり
    void
    指定されたメソッドを準備します。
    protected ClassSE<?>
    指定されたクラス名をクラスに解決します。
    void
    setArguments(ObjectSE... arguments)
    メソッド呼び出しの引数を設定します。
    void
    呼び出す完全修飾静的メソッド名を設定します (例: "example.MyExampleClass.myExampleMethod" )。
    void
    setTargetClass(ClassSE<?> targetClass)
    ターゲットメソッドを呼び出すターゲットクラスを設定します。
    void
    呼び出されるメソッドの名前を設定します。
    void
    ターゲットメソッドを呼び出すターゲットオブジェクトを設定します。

    クラス java.lang.ObjectSE から継承されたメソッド

    clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE
  • フィールドの詳細

  • コンストラクターの詳細

    • MethodInvoker

      public MethodInvoker()
  • メソッドの詳細

    • setTargetClass

      public void setTargetClass(@Nullable ClassSE<?> targetClass)
      ターゲットメソッドを呼び出すターゲットクラスを設定します。ターゲットメソッドが静的な場合にのみ必要です。それ以外の場合は、ターゲットオブジェクトを指定する必要があります。
      関連事項:
    • getTargetClass

      @Nullable public ClassSE<?> getTargetClass()
      ターゲットメソッドを呼び出すターゲットクラスを返します。
    • setTargetObject

      public void setTargetObject(@Nullable ObjectSE targetObject)
      ターゲットメソッドを呼び出すターゲットオブジェクトを設定します。ターゲットメソッドが静的でない場合にのみ必要です。それ以外の場合は、ターゲットクラスで十分です。
      関連事項:
    • getTargetObject

      @Nullable public ObjectSE getTargetObject()
      ターゲットメソッドを呼び出すターゲットオブジェクトを返します。
    • setTargetMethod

      public void setTargetMethod(@Nullable StringSE targetMethod)
      呼び出されるメソッドの名前を設定します。設定するターゲットオブジェクトに応じて、静的メソッドまたは非静的メソッドのいずれかを指します。
      関連事項:
    • getTargetMethod

      @Nullable public StringSE getTargetMethod()
      呼び出されるメソッドの名前を返します。
    • setStaticMethod

      public void setStaticMethod(StringSE staticMethod)
      呼び出す完全修飾静的メソッド名を設定します (例: "example.MyExampleClass.myExampleMethod" )。これは、targetClass および targetMethod を指定する代わりに便利です。
      関連事項:
    • setArguments

      public void setArguments(@Nullable ObjectSE... arguments)
      メソッド呼び出しの引数を設定します。このプロパティが設定されていない場合、または Object 配列の長さが 0 の場合、引数のないメソッドが想定されます。
    • getArguments

      public ObjectSE[] getArguments()
      メソッド呼び出しの引数を返します。
    • prepare

      public void prepare() throws ClassNotFoundExceptionSE, NoSuchMethodExceptionSE
      指定されたメソッドを準備します。このメソッドは、その後何度でも呼び出すことができます。
      例外:
      ClassNotFoundExceptionSE
      NoSuchMethodExceptionSE
      関連事項:
    • resolveClassName

      protected ClassSE<?> resolveClassName(StringSE className) throws ClassNotFoundExceptionSE
      指定されたクラス名をクラスに解決します。

      デフォルトの実装では、スレッドコンテキストクラスローダーを使用して ClassUtils.forName を使用します。

      パラメーター:
      className - 解決するクラス名
      戻り値:
      解決されたクラス
      例外:
      ClassNotFoundExceptionSE - クラス名が無効だった場合
    • findMatchingMethod

      @Nullable protected MethodSE findMatchingMethod()
      指定された引数に指定された名前を持つ一致するメソッドを見つけます。
      戻り値:
      一致するメソッド。ない場合は null 
      関連事項:
    • getPreparedMethod

      public MethodSE getPreparedMethod() throws IllegalStateExceptionSE
      呼び出される準備済みの Method オブジェクトを返します。

      たとえば、戻り値の型を決定するために使用できます。

      戻り値:
      準備された Method オブジェクト (非 null)
      例外:
      IllegalStateExceptionSE - 呼び出し側がまだ準備されていない場合
      関連事項:
    • isPrepared

      public boolean isPrepared()
      この呼び出し元がすでに準備されているかどうか、つまり、getPreparedMethod() へのアクセスをすでに許可しているかどうかを返します。
    • invoke

      指定されたメソッドを呼び出します。

      呼び出し元は、事前に準備されている必要があります。

      戻り値:
      メソッドの呼び出しによって返されたオブジェクト(null の可能性がある)、またはメソッドに void の戻り型がある場合は null 
      例外:
      InvocationTargetExceptionSE - ターゲットメソッドが例外をスローした場合
      IllegalAccessExceptionSE - ターゲットメソッドにアクセスできなかった場合
      関連事項:
    • getTypeDifferenceWeight

      public static int getTypeDifferenceWeight(ClassSE<?>[] paramTypes, ObjectSE[] args)
      候補メソッドの宣言されたパラメーター型と、このメソッドが呼び出されることになっている引数の特定のリストとの間の一致を判断するアルゴリズム。

      型と引数の間のクラス階層の違いを表す重みを決定します。直接一致、つまり整数 → と入力します。クラス Integer の arg は、結果を増加させません - すべての直接一致は重み 0 を意味します。型 Object とクラス Integer の arg が一致すると、階層内のスーパークラス 2 ステップ(つまり Object)により、重みが 2 増加します。必要な型のオブジェクトにまだ一致する最後のもの。型 Number とクラス Integer は、それに応じて重みを 1 増やします。これは、スーパークラス 1 が階層をステップアップするため(つまり、Number)、必要な型 Number と一致しているためです。整数型の引数を使用すると、コンストラクター(整数)がコンストラクター(数値)よりも優先され、コンストラクター(数値)がコンストラクター(オブジェクト)よりも優先されます。すべての引数の重みが累積されます。

      メモ: これは、MethodInvoker 自体で使用されるアルゴリズムであり、Spring の Bean コンテナーでコンストラクターとファクトリメソッドを選択するために使用されるアルゴリズムです(通常の Bean 定義のデフォルトである寛大なコンストラクター解決の場合)。

      パラメーター:
      paramTypes - 一致するパラメーター型
      args - 一致する引数
      戻り値:
      すべての引数の累積重み