クラス ReflectivePropertyAccessor
java.lang.ObjectSE
org.springframework.expression.spel.support.ReflectivePropertyAccessor
- 実装されたすべてのインターフェース:
PropertyAccessor
- 既知の直属サブクラス
DataBindingPropertyAccessor
リフレクションを使用して、ターゲットインスタンスでの読み取りおよび場合によっては書き込みのプロパティにアクセスする強力な
PropertyAccessor
。プロパティは、パブリック getter メソッド(読み取り時)またはパブリック setter メソッド(書き込み時)を通じて、およびパブリックフィールドとしても参照できます。
- 導入:
- 3.0
- 作成者:
- Andy Clement, Juergen Hoeller, Phillip Webb, Sam Brannen
- 関連事項:
ネストされたクラスのサマリー
修飾子と型クラス説明static class
リフレクションを使用するが、特定のクラスの特定のプロパティにアクセスする方法のみを知っている PropertyAccessor の最適化された形式。コンストラクターのサマリー
コンストラクター説明読み取りおよび書き込み用の新しいプロパティアクセサーを作成します。ReflectivePropertyAccessor
(boolean allowWrite) 読み取りおよび場合によっては書き込み用の新しいプロパティアクセサーを作成します。メソッドのサマリー
修飾子と型メソッド説明boolean
canRead
(EvaluationContext context, ObjectSE target, StringSE name) リゾルバーインスタンスが指定されたターゲットオブジェクトの指定されたプロパティにアクセスできるかどうかを判断するために呼び出されます。boolean
canWrite
(EvaluationContext context, ObjectSE target, StringSE name) リゾルバーインスタンスが指定されたターゲットオブジェクトの指定されたプロパティに書き込むことができるかどうかを判断するために呼び出されます。createOptimalAccessor
(EvaluationContext context, ObjectSE target, StringSE name) 特定のクラスの特定の名前のプロパティに合わせて最適化されたプロパティアクセサーを作成しようとします。protected FieldSE
指定されたクラスで特定の名前のフィールドを検索します。protected MethodSE
findGetterForProperty
(StringSE propertyName, ClassSE<?> clazz, boolean mustBeStatic) 指定されたプロパティの getter メソッドを見つけます。protected MethodSE
findSetterForProperty
(StringSE propertyName, ClassSE<?> clazz, boolean mustBeStatic) 指定されたプロパティの setter メソッドを見つけます。protected StringSE
getPropertyMethodSuffix
(StringSE propertyName) 特定のプロパティ名のメソッドサフィックスを返します。protected StringSE[]
getPropertyMethodSuffixes
(StringSE propertyName) 指定されたプロパティ名のメソッドサフィックスを返します。ClassSE<?>[]
null
を返します。これは、これが汎用アクセサーであることを意味します。protected boolean
isCandidateForProperty
(MethodSE method, ClassSE<?> targetClass) 指定されたMethod
が、指定されたターゲットクラスのインスタンスのプロパティアクセスの候補であるかどうかを判断します。read
(EvaluationContext context, ObjectSE target, StringSE name) 指定されたターゲットオブジェクトからプロパティを読み取るために呼び出されます。void
write
(EvaluationContext context, ObjectSE target, StringSE name, ObjectSE newValue) 指定されたターゲットオブジェクトのプロパティに書き込むために呼び出されます。
コンストラクターの詳細
ReflectivePropertyAccessor
public ReflectivePropertyAccessor()読み取りおよび書き込み用の新しいプロパティアクセサーを作成します。ReflectivePropertyAccessor
public ReflectivePropertyAccessor(boolean allowWrite) 読み取りおよび場合によっては書き込み用の新しいプロパティアクセサーを作成します。- パラメーター:
allowWrite
- ターゲットインスタンスで書き込み操作を許可するかどうか- 導入:
- 4.3.15
- 関連事項:
メソッドの詳細
getSpecificTargetClasses
null
を返します。これは、これが汎用アクセサーであることを意味します。- 次で指定:
- インターフェース
PropertyAccessor
のgetSpecificTargetClasses
- 戻り値:
- このリゾルバーが適しているクラスの配列 (または一般的なリゾルバーの場合は
null
)
canRead
public boolean canRead(EvaluationContext context, @Nullable ObjectSE target, StringSE name) throws AccessException インターフェースからコピーされた説明:PropertyAccessor
リゾルバーインスタンスが指定されたターゲットオブジェクトの指定されたプロパティにアクセスできるかどうかを判断するために呼び出されます。- 次で指定:
- インターフェース
PropertyAccessor
のcanRead
- パラメーター:
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
を返す場合にのみ成功します。- 次で指定:
- インターフェース
PropertyAccessor
のread
- パラメーター:
context
- アクセスが試行されている評価コンテキストtarget
- プロパティがアクセスされるターゲットオブジェクトname
- アクセスされるプロパティの名前- 戻り値:
- 読み込まれたプロパティ値とその型記述子をラップする TypedValue オブジェクト
- 例外:
AccessException
- プロパティ値へのアクセスに問題がある場合
canWrite
public boolean canWrite(EvaluationContext context, @Nullable ObjectSE target, StringSE name) throws AccessException インターフェースからコピーされた説明:PropertyAccessor
リゾルバーインスタンスが指定されたターゲットオブジェクトの指定されたプロパティに書き込むことができるかどうかを判断するために呼び出されます。- 次で指定:
- インターフェース
PropertyAccessor
のcanWrite
- パラメーター:
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
を返す場合にのみ成功します。- 次で指定:
- インターフェース
PropertyAccessor
のwrite
- パラメーター:
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
指定されたMethod
が、指定されたターゲットクラスのインスタンスのプロパティアクセスの候補であるかどうかを判断します。デフォルトの実装では、
Object
SE 基本クラスでユーザーが宣言していないプロパティであっても、すべてのメソッドが候補と見なされます。- パラメーター:
method
- 評価する方法targetClass
- イントロスペクトされている具体的なターゲットクラス- 導入:
- 4.3.15
getPropertyMethodSuffixes
指定されたプロパティ名のメソッドサフィックスを返します。デフォルトの実装では、JavaBean 規則を使用し、xZ の形式のプロパティを追加サポートしています。getxY() の JavaBean 規則よりも getXY() の方が優先的に使用されます。getPropertyMethodSuffix
特定のプロパティ名のメソッドサフィックスを返します。デフォルトの実装では、JavaBean 規則を使用します。findField
指定されたクラスで特定の名前のフィールドを検索します。createOptimalAccessor
public PropertyAccessor createOptimalAccessor(EvaluationContext context, @Nullable ObjectSE target, StringSE name) 特定のクラスの特定の名前のプロパティに合わせて最適化されたプロパティアクセサーを作成しようとします。一般的な ReflectivePropertyAccessor は常に機能しますが、read() が呼び出されるたびに使用する反射メンバー(メソッド / フィールド)を検索する必要があるため、最適ではありません。このメソッドは、より最適なアクセサーを構築できない場合に、ReflectivePropertyAccessor インスタンスを返すだけです。メモ: 最適なアクセサーは現在、読み取り試行のみに使用できます。読み取り / 書き込みアクセサーが必要な場合は、このメソッドを呼び出さないでください。