クラス ReflectiveMethodResolver

java.lang.ObjectSE
org.springframework.expression.spel.support.ReflectiveMethodResolver
実装されたすべてのインターフェース:
MethodResolver
既知の直属サブクラス
DataBindingMethodResolver

public class ReflectiveMethodResolver extends ObjectSE implements MethodResolver
明示的なメソッドリゾルバーが指定されていない限り、StandardEvaluationContext ではデフォルトでリフレクションベースの MethodResolver が使用されます。
導入:
3.0
作成者:
Andy Clement, Juergen Hoeller, Chris Beams, Sam Brannen
関連事項:
  • コンストラクターの詳細

    • ReflectiveMethodResolver

      public ReflectiveMethodResolver()
    • ReflectiveMethodResolver

      public ReflectiveMethodResolver(boolean useDistance)
      このコンストラクターを使用すると、ReflectiveMethodResolver を構成して、距離計算を使用して、2 つの近い一致のどちらが優れているかを確認できます(複数の一致がある場合)。距離計算を使用することは、ボックス化 / ボックス化解除を考慮したときに Java コンパイラーが行うこと、および渡される型の(引数の)スーパー型を処理するようにメソッド候補が宣言されているかどうかを一致がより厳密に表すようにすることを目的としています。
      パラメーター:
      useDistance - 一致を計算するときに距離計算を使用する必要がある場合は true。それ以外の場合は false 
  • メソッドの詳細

    • registerMethodFilter

      public void registerMethodFilter(ClassSE<?> type, @Nullable MethodFilter filter)
      指定された型のメソッドのフィルターを登録します。
      パラメーター:
      type - フィルタリングする型
      filter - 対応するメソッドフィルター、または指定された型のフィルターをクリアする null 
    • resolve

      @Nullable public MethodExecutor resolve(EvaluationContext context, ObjectSE targetObject, StringSE name, ListSE<TypeDescriptor> argumentTypes) throws AccessException
      型のメソッドを見つけます。

      発生する可能性のある一致には次の 3 種類があります。

      1. 引数の型がメソッドの型と一致する完全一致。
      2. 探している型がメソッドで定義されている型のサブ型である不完全一致。
      3. 登録された型コンバーターに従って、引数をメソッドで予期される引数に変換できる一致。
      次で指定:
      インターフェース MethodResolverresolve 
      パラメーター:
      context - 現在の評価コンテキスト
      targetObject - メソッドが呼び出されるオブジェクト
      name - メソッドの名前
      argumentTypes - メソッドが処理できる必要がある引数の型
      戻り値:
      メソッドを呼び出すことができる MethodExecutor、またはメソッドが見つからない場合は null 
      例外:
      AccessException
    • getMethods

      protected MethodSE[] getMethods(ClassSE<?> type)
      この型のメソッドのセットを返します。デフォルトの実装は、指定された typeClass.getMethods() の結果を返しますが、結果を変更するためにサブクラスがオーバーライドされる場合があります。他の場所で宣言された静的メソッドを指定します。
      パラメーター:
      type - メソッドを返すクラス
      導入:
      3.1.1
    • isCandidateForInvocation

      protected boolean isCandidateForInvocation(MethodSE method, ClassSE<?> targetClass)
      指定された Method が、指定されたターゲットクラスのインスタンスのメソッド解決の候補であるかどうかを判断します。

      デフォルトの実装では、ObjectSE 基本クラスの静的メソッドやユーザー宣言されていないメソッドであっても、すべてのメソッドが候補と見なされます。

      パラメーター:
      method - 評価する方法
      targetClass - イントロスペクトされている具体的なターゲットクラス
      導入:
      4.3.15