インターフェース IndexAccessor
- すべてのスーパーインターフェース:
TargetedAccessor
- 既知のすべてのサブインターフェース:
CompilableIndexAccessor
- すべての既知の実装クラス:
ReflectiveIndexAccessor
このインターフェースは、インデックス構造を構成するものに制限を設けません。実装者は適切と思われる方法でインデックス値に自由にアクセスできます。
インデックスアクセサーは、呼び出す対象となるターゲットクラスの配列を指定できます。詳細については、TargetedAccessor を参照してください。
SpEL インフラストラクチャは、特定のインデックスとターゲット型に対して読み取りまたは書き込みが正常に処理された後、ノードごとに IndexAccessor インスタンスをキャッシュする場合があります。これは、そのノードの後続の評価で、登録されているすべてのアクセサーに対して canRead(EvaluationContext, Object, Object)/canWrite(EvaluationContext, Object, Object) を繰り返し呼び出すことを回避するためです。キャッシュされたインスタンスを再利用する前に、SpEL はそれが現在の EvaluationContext にまだ登録されていることを確認します。アクセサーがコンテキストに登録されている限り、canRead(EvaluationContext, Object, Object)、canWrite(EvaluationContext, Object, Object)、read(EvaluationContext, Object, Object)、write(EvaluationContext, Object, Object, Object) は、特定の (context, target type, index) の組み合わせに対して一貫して動作するはずです。これは、アクセサーが最初から再選択されるまで動作の変更が観測されない可能性があるためです。
- 導入:
- 6.2
- 作成者:
- Jackmiking Lee, Sam Brannen
- 関連事項:
方法の概要
修飾子と型メソッド説明booleancanRead(EvaluationContext context, ObjectSE target, ObjectSE index) このインデックスアクセサーが指定されたターゲットオブジェクトの指定されたインデックスを読み取ることができるかどうかを判断します。booleancanWrite(EvaluationContext context, ObjectSE target, ObjectSE index) このインデックスアクセサーが指定されたターゲットオブジェクトの指定されたインデックスに書き込むことができるかどうかを判断します。read(EvaluationContext context, ObjectSE target, ObjectSE index) 指定されたターゲットオブジェクトからインデックスを読み取ります。void指定されたターゲットオブジェクトのインデックスに書き込みます。インターフェース TargetedAccessor から継承されたメソッド
getSpecificTargetClasses
方法の詳細
canRead
このインデックスアクセサーが指定されたターゲットオブジェクトの指定されたインデックスを読み取ることができるかどうかを判断します。- パラメーター:
context- アクセスが試行されている評価コンテキストtarget- インデックスがアクセスされるターゲットオブジェクトindex- アクセスされているインデックス- 戻り値:
- このインデックスアクセサーがインデックスを読み取ることができる場合は
true - 例外:
AccessException- インデックスが読み取れるかどうかの判断に問題がある場合
read
指定されたターゲットオブジェクトからインデックスを読み取ります。canRead(EvaluationContext, Object, Object)が同じ引数に対してtrueを返す場合にのみ呼び出す必要があります。- パラメーター:
context- アクセスが試行されている評価コンテキストtarget- インデックスがアクセスされるターゲットオブジェクトindex- アクセスされているインデックス- 戻り値:
- 読み取られたインデックス値と値の型記述子をラップする TypedValue オブジェクト
- 例外:
AccessException- インデックスの読み取りに問題がある場合
canWrite
このインデックスアクセサーが指定されたターゲットオブジェクトの指定されたインデックスに書き込むことができるかどうかを判断します。- パラメーター:
context- アクセスが試行されている評価コンテキストtarget- インデックスがアクセスされるターゲットオブジェクトindex- アクセスされているインデックス- 戻り値:
- このインデックスアクセサーがインデックスに書き込むことができる場合は
true - 例外:
AccessException- インデックスが書き込めるかどうかを判断する際に問題がある場合
write
void write(EvaluationContext context, ObjectSE target, ObjectSE index, @Nullable ObjectSE newValue) throws AccessException 指定されたターゲットオブジェクトのインデックスに書き込みます。canWrite(EvaluationContext, Object, Object)が同じ引数に対してtrueを返す場合にのみ呼び出す必要があります。- パラメーター:
context- アクセスが試行されている評価コンテキストtarget- インデックスがアクセスされるターゲットオブジェクトindex- アクセスされているインデックスnewValue- インデックスの新しい値- 例外:
AccessException- インデックスへの書き込みに問題がある場合