クラス Indexer
Indexer
は、先行する構造にインデックスを付けて、その構造の特定の要素にアクセスできます。Java で配列の n 番目の要素にアクセスする場合など、数値インデックス値はゼロから始まります。
サポートされている構造
- 配列: n 番目の要素
- コレクション(リスト、セットなど): n 番目の要素
- ストリング: n 番目の文字を
String
SE として - マップ: 指定されたキーの値
- オブジェクト: 指定された名前のプロパティ
- カスタム構造: 登録された
IndexAccessor
実装経由
Null セーフなインデックス
Spring Framework 6.2 以降、'?.'
演算子を介して null セーフインデックスがサポートされています。例: colors
が null
の場合、'colors?.[0]'
は null
に評価され、それ以外の場合は 0 番目の色に評価されます。
- 導入:
- 3.0
- 作成者:
- Andy Clement, Phillip Webb, Stephane Nicoll, Sam Brannen
- 関連事項:
フィールドのサマリー
クラス org.springframework.expression.spel.ast.SpelNodeImpl から継承されたフィールド
children, exitTypeDescriptor
インターフェース org.springframework.asm.Opcodes から継承されたフィールド
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MANDATED, ACC_MODULE, ACC_NATIVE, ACC_OPEN, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_RECORD, ACC_STATIC, ACC_STATIC_PHASE, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_TRANSITIVE, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASM10_EXPERIMENTAL, ASM4, ASM5, ASM6, ASM7, ASM8, ASM9, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, H_GETFIELD, H_GETSTATIC, H_INVOKEINTERFACE, H_INVOKESPECIAL, H_INVOKESTATIC, H_INVOKEVIRTUAL, H_NEWINVOKESPECIAL, H_PUTFIELD, H_PUTSTATIC, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, IMUL, INEG, INSTANCEOF, INTEGER, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SOURCE_DEPRECATED, SOURCE_MASK, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V_PREVIEW, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V9
コンストラクターの概要
コンストラクターコンストラクター説明Indexer
(boolean nullSafe, int startPos, int endPos, SpelNodeImpl indexExpression) 指定された null セーフフラグ、開始位置、終了位置、インデックス式を使用してIndexer
を作成します。Indexer
(int startPos, int endPos, SpelNodeImpl indexExpression) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。メソッドのサマリー
修飾子と型メソッド説明void
generateCode
(MethodVisitor mv, CodeFlow cf) このノードのバイトコードを指定されたMethodVisitor
に生成します。getValueInternal
(ExpressionState state) protected ValueRef
getValueRef
(ExpressionState state) boolean
このノードをバイトコードにコンパイルできるかどうかを判断します。final boolean
このノードは null セーフなインデックス操作を表していますか ?boolean
isWritable
(ExpressionState expressionState) この式ノードが setValue() 呼び出しをサポートするかどうかを決定します。setValueInternal
(ExpressionState state, SupplierSE<TypedValue> valueSupplier) 式をノードに評価し、指定されたSupplier
SE によって作成された新しい値をそのノードに設定します。この AST ノードの文字列形式を返します。クラス org.springframework.expression.spel.ast.SpelNodeImpl から継承されたメソッド
generateCodeForArgument, generateCodeForArguments, generateCodeForArguments, getChild, getChildCount, getEndPosition, getExitDescriptor, getObjectClass, getStartPosition, getTypedValue, getValue, getValue, nextChildIs, setValue
コンストラクターの詳細
Indexer
@DeprecatedSE(since="6.2", forRemoval=true) public Indexer(int startPos, int endPos, SpelNodeImpl indexExpression) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。6.2 現在、Indexer(boolean, int, int, SpelNodeImpl)
を推奨指定された開始位置、終了位置、インデックス式を使用してIndexer
を作成します。Indexer
指定された null セーフフラグ、開始位置、終了位置、インデックス式を使用してIndexer
を作成します。- 導入:
- 6.2
メソッドの詳細
isNullSafe
public final boolean isNullSafe()このノードは null セーフなインデックス操作を表していますか ?- オーバーライド:
- クラス
SpelNodeImpl
のisNullSafe
- 戻り値:
true
このノードが null セーフ操作のターゲットである場合- 導入:
- 6.2
getValueInternal
- 次で指定:
- クラス
SpelNodeImpl
のgetValueInternal
- 例外:
EvaluationException
setValueInternal
public TypedValue setValueInternal(ExpressionState state, SupplierSE<TypedValue> valueSupplier) throws EvaluationException クラスからコピーされた説明:SpelNodeImpl
式をノードに評価し、指定されたSupplier
SE によって作成された新しい値をそのノードに設定します。例: 式がプロパティ参照に評価される場合、プロパティは新しい値に設定されます。
値を遅延計算する必要がある場合は、
SpelNodeImpl.setValue(ExpressionState, Object)
よりもこの方法を優先します。デフォルトでは、このメソッドは
SpelEvaluationException
をスローし、この機能を効果的に無効にします。サブクラスはこのメソッドをオーバーライドして、実際の実装を提供できます。- オーバーライド:
- クラス
SpelNodeImpl
のsetValueInternal
- パラメーター:
state
- 現在の式の状態 (コンテキストを含みます)valueSupplier
- 新しい価値の提供者- 例外:
EvaluationException
- 式の評価または新しい値の設定で問題が発生した場合
isWritable
インターフェースからコピーされた説明:SpelNode
この式ノードが setValue() 呼び出しをサポートするかどうかを決定します。- 次で指定:
- インターフェース
SpelNode
のisWritable
- オーバーライド:
- クラス
SpelNodeImpl
のisWritable
- パラメーター:
expressionState
- 現在の式の状態 (コンテキストを含みます)- 戻り値:
- 式ノードが setValue() を許可する場合は true
- 例外:
SpelEvaluationException
getValueRef
- オーバーライド:
- クラス
SpelNodeImpl
のgetValueRef
- 例外:
EvaluationException
isCompilable
public boolean isCompilable()インターフェースからコピーされた説明:SpelNode
このノードをバイトコードにコンパイルできるかどうかを判断します。各ノードでの推論は異なる場合がありますが、通常は、ノードの終了型記述子が既知であるかどうか、および関連する子ノードがコンパイル可能であるかどうかをチェックします。
デフォルトの実装は
false
を返します。このメソッドをオーバーライドする場合は、
SpelNode.generateCode(MethodVisitor, CodeFlow)
もオーバーライドする必要があります。- 戻り値:
- このノードをバイトコードにコンパイルできる場合は
true
- 関連事項:
generateCode
インターフェースからコピーされた説明:SpelNode
このノードのバイトコードを指定されたMethodVisitor
に生成します。コンパイル中の現在の式に関するコンテキスト情報は、提供された
CodeFlow
オブジェクトで入手できます。たとえば、現在スタック上にあるオブジェクトの型に関する情報などです。SpelNode.isCompilable()
がtrue
を返さない限り、このメソッドは呼び出されません。デフォルトでは、
SpelNode.isCompilable()
はfalse
を返すため、デフォルトの実装ではIllegalStateException
SE がスローされます。このメソッドをオーバーライドする場合は、
SpelNode.isCompilable()
もオーバーライドする必要があります。- パラメーター:
mv
- コードが生成される ASMMethodVisitor
cf
- スタック上にあるものに関する情報を持つコンテキストオブジェクト- 関連事項:
toStringAST
インターフェースからコピーされた説明:SpelNode
この AST ノードの文字列形式を返します。- 戻り値:
- 文字列形式
Indexer(boolean, int, int, SpelNodeImpl)
を推奨