クラス ReflectivePropertyAccessor

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

public class ReflectivePropertyAccessor extends ObjectSE implements PropertyAccessor
リフレクションを使用して、ターゲットインスタンスでの読み取りおよび場合によっては書き込みのプロパティにアクセスする強力な PropertyAccessor

プロパティは、パブリック getter メソッド(読み取り時)またはパブリック setter メソッド(書き込み時)を通じて、およびパブリックフィールドとしても参照できます。

導入:
3.0
作成者:
Andy Clement, Juergen Hoeller, Phillip Webb, Sam Brannen, Sebastien Deleuze
関連事項:
  • コンストラクターの詳細

    • ReflectivePropertyAccessor

      public ReflectivePropertyAccessor()
      読み取りおよび書き込み用の新しいプロパティアクセサーを作成します。
      関連事項:
    • ReflectivePropertyAccessor

      public ReflectivePropertyAccessor(boolean allowWrite)
      読み取りおよび場合によっては書き込み用の新しいプロパティアクセサーを作成します。
      パラメーター:
      allowWrite - ターゲットインスタンスで書き込み操作を許可するかどうか
      導入:
      4.3.15
      関連事項:
  • メソッドの詳細

    • getSpecificTargetClasses

      @Nullable public ClassSE<?>[] getSpecificTargetClasses()
      null を返します。これは、これが汎用アクセサーであることを意味します。
      次で指定:
      インターフェース PropertyAccessorgetSpecificTargetClasses 
      戻り値:
      このリゾルバーが適しているクラスの配列 (または一般的なリゾルバーの場合は null )
    • canRead

      public boolean canRead(EvaluationContext context, @Nullable ObjectSE target, StringSE name) throws AccessException
      インターフェースからコピーされた説明: PropertyAccessor
      リゾルバーインスタンスが指定されたターゲットオブジェクトの指定されたプロパティにアクセスできるかどうかを判断するために呼び出されます。
      次で指定:
      インターフェース PropertyAccessorcanRead 
      パラメーター:
      context - アクセスが試行されている評価コンテキスト
      target - プロパティがアクセスされるターゲットオブジェクト
      name - アクセスされるプロパティの名前
      戻り値:
      このリゾルバーがプロパティを読み取れる場合は true
      例外:
      AccessException - プロパティを読み取ることができるかどうかを判断する際に問題がある場合
    • read

      public TypedValue read(EvaluationContext context, @Nullable ObjectSE target, StringSE name) throws AccessException
      インターフェースからコピーされた説明: PropertyAccessor
      指定されたターゲットオブジェクトからプロパティを読み取るために呼び出されます。PropertyAccessor.canRead(org.springframework.expression.EvaluationContext, java.lang.Object, java.lang.String) も true を返す場合にのみ成功します。
      次で指定:
      インターフェース PropertyAccessorread 
      パラメーター:
      context - アクセスが試行されている評価コンテキスト
      target - プロパティがアクセスされるターゲットオブジェクト
      name - アクセスされるプロパティの名前
      戻り値:
      読み込まれたプロパティ値とその型記述子をラップする TypedValue オブジェクト
      例外:
      AccessException - プロパティ値へのアクセスに問題がある場合
    • canWrite

      public boolean canWrite(EvaluationContext context, @Nullable ObjectSE target, StringSE name) throws AccessException
      インターフェースからコピーされた説明: PropertyAccessor
      リゾルバーインスタンスが指定されたターゲットオブジェクトの指定されたプロパティに書き込むことができるかどうかを判断するために呼び出されます。
      次で指定:
      インターフェース PropertyAccessorcanWrite 
      パラメーター:
      context - アクセスが試行されている評価コンテキスト
      target - プロパティがアクセスされるターゲットオブジェクト
      name - アクセスされるプロパティの名前
      戻り値:
      このリゾルバーがプロパティに書き込むことができる場合は true
      例外:
      AccessException - プロパティを書き込むことができるかどうかを判断する際に問題がある場合
    • write

      public void write(EvaluationContext context, @Nullable ObjectSE target, StringSE name, @Nullable ObjectSE newValue) throws AccessException
      インターフェースからコピーされた説明: PropertyAccessor
      指定されたターゲットオブジェクトのプロパティに書き込むために呼び出されます。PropertyAccessor.canWrite(org.springframework.expression.EvaluationContext, java.lang.Object, java.lang.String) も true を返す場合にのみ成功します。
      次で指定:
      インターフェース PropertyAccessorwrite 
      パラメーター:
      context - アクセスが試行されている評価コンテキスト
      target - プロパティがアクセスされるターゲットオブジェクト
      name - アクセスされるプロパティの名前
      newValue - プロパティの新しい値
      例外:
      AccessException - プロパティ値への書き込みに問題がある場合
    • findGetterForProperty

      @Nullable protected MethodSE findGetterForProperty(StringSE propertyName, ClassSE<?> clazz, boolean mustBeStatic)
      指定されたプロパティの getter メソッドを見つけます。
    • findSetterForProperty

      @Nullable protected MethodSE findSetterForProperty(StringSE propertyName, ClassSE<?> clazz, boolean mustBeStatic)
      指定されたプロパティの setter メソッドを見つけます。
    • isCandidateForProperty

      protected boolean isCandidateForProperty(MethodSE method, ClassSE<?> targetClass)
      指定された Method が、指定されたターゲットクラスのインスタンスのプロパティアクセスの候補であるかどうかを判断します。

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

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

      protected StringSE[] getPropertyMethodSuffixes(StringSE propertyName)
      指定されたプロパティ名のメソッドサフィックスを返します。デフォルトの実装では、JavaBean 規則を使用し、xZ の形式のプロパティを追加サポートしています。getxY() の JavaBean 規則よりも getXY() の方が優先的に使用されます。
    • getPropertyMethodSuffix

      protected StringSE getPropertyMethodSuffix(StringSE propertyName)
      特定のプロパティ名のメソッドサフィックスを返します。デフォルトの実装では、JavaBean 規則を使用します。
    • findField

      @Nullable protected FieldSE findField(StringSE name, ClassSE<?> clazz, boolean mustBeStatic)
      指定されたクラスで特定の名前のフィールドを検索します。
    • createOptimalAccessor

      public PropertyAccessor createOptimalAccessor(EvaluationContext context, @Nullable ObjectSE target, StringSE name)
      特定のクラスの特定の名前のプロパティに合わせて最適化されたプロパティアクセサーを作成しようとします。一般的な ReflectivePropertyAccessor は常に機能しますが、read() が呼び出されるたびに使用する反射メンバー(メソッド / フィールド)を検索する必要があるため、最適ではありません。このメソッドは、より最適なアクセサーを構築できない場合に、ReflectivePropertyAccessor インスタンスを返すだけです。

      メモ: 最適なアクセサーは現在、読み取り試行のみに使用できます。読み取り / 書き込みアクセサーが必要な場合は、このメソッドを呼び出さないでください。

      関連事項: