インターフェース SpelNode
- すべての既知の実装クラス:
Assign
、BeanReference
、BooleanLiteral
、CompoundExpression
、ConstructorReference
、Elvis
、FloatLiteral
、FunctionReference
、Identifier
、Indexer
、InlineList
、InlineMap
、IntLiteral
、Literal
、LongLiteral
、MethodReference
、NullLiteral
、OpAnd
、OpDec
、OpDivide
、OpEQ
、Operator
、OperatorBetween
、OperatorInstanceof
、OperatorMatches
、OperatorNot
、OperatorPower
、OpGE
、OpGT
、OpInc
、OpLE
、OpLT
、OpMinus
、OpModulus
、OpMultiply
、OpNE
、OpOr
、OpPlus
、Projection
、PropertyOrFieldReference
、QualifiedIdentifier
、RealLiteral
、Selection
、SpelNodeImpl
、StringLiteral
、Ternary
、TypeReference
、VariableReference
public interface SpelNode
解析された Spring 式言語 (SpEL) 式の抽象構文ツリー (AST) 内のノードを表します。
- 導入:
- 3.0
- 作成者:
- Andy Clement, Sam Brannen
メソッドのサマリー
修飾子と型メソッド説明default void
generateCode
(MethodVisitor methodVisitor, CodeFlow codeFlow) このノードのバイトコードを指定されたMethodVisitor
に生成します。getChild
(int index) このノードの n 番目の子を返します。int
このノードの子の数を返します。int
式文字列内のこの AST ノードの終了位置を返します。ClassSE<?>
getObjectClass
(ObjectSE obj) 渡されたオブジェクトがすでにクラスオブジェクトでない限り、渡されたオブジェクトのクラスを判別します。int
この AST ノードの開始位置を式文字列で返します。getTypedValue
(ExpressionState expressionState) 指定された式の状態のコンテキストで式ノードを評価し、型付きの値を返します。getValue
(ExpressionState expressionState) 指定された式の状態のコンテキストで式ノードを評価し、値を返します。default boolean
このノードをバイトコードにコンパイルできるかどうかを判断します。boolean
isWritable
(ExpressionState expressionState) この式ノードが setValue() 呼び出しをサポートするかどうかを決定します。void
setValue
(ExpressionState expressionState, ObjectSE newValue) 式をノードに評価してから、そのノードに新しい値を設定します。この AST ノードの文字列形式を返します。
メソッドの詳細
getValue
指定された式の状態のコンテキストで式ノードを評価し、値を返します。- パラメーター:
expressionState
- 現在の式の状態 (コンテキストを含みます)- 戻り値:
- 指定された状態に対して評価されたこのノードの値
- 例外:
EvaluationException
- 式の評価中に問題が発生した場合
getTypedValue
指定された式の状態のコンテキストで式ノードを評価し、型付きの値を返します。- パラメーター:
expressionState
- 現在の式の状態 (コンテキストを含みます)- 戻り値:
- 指定された状態に対して評価されたこのノードの型指定された値
- 例外:
EvaluationException
- 式の評価中に問題が発生した場合
isWritable
この式ノードが setValue() 呼び出しをサポートするかどうかを決定します。- パラメーター:
expressionState
- 現在の式の状態 (コンテキストを含みます)- 戻り値:
- 式ノードが setValue() を許可する場合は true
- 例外:
EvaluationException
- ノードが書き込みをサポートしているかどうかを判断しようとして問題が発生した場合
setValue
void setValue(ExpressionState expressionState, @Nullable ObjectSE newValue) throws EvaluationException 式をノードに評価してから、そのノードに新しい値を設定します。例: 式がプロパティ参照に評価される場合、プロパティは新しい値に設定されます。- パラメーター:
expressionState
- 現在の式の状態 (コンテキストを含みます)newValue
- 新しい価値- 例外:
EvaluationException
- 式の評価または新しい値の設定で問題が発生した場合
toStringAST
StringSE toStringAST()この AST ノードの文字列形式を返します。- 戻り値:
- 文字列形式
getChildCount
int getChildCount()このノードの子の数を返します。- 戻り値:
- 子供の数
- 関連事項:
getChild
このノードの n 番目の子を返します。- 戻り値:
- 子ノード
- 関連事項:
getObjectClass
渡されたオブジェクトがすでにクラスオブジェクトでない限り、渡されたオブジェクトのクラスを判別します。- パラメーター:
obj
- 呼び出し元がクラスを必要とするオブジェクト- 戻り値:
- オブジェクトがクラスオブジェクトでない場合はオブジェクトのクラス、オブジェクトが
null
の場合はnull
getStartPosition
int getStartPosition()この AST ノードの開始位置を式文字列で返します。- 戻り値:
- 開始位置
getEndPosition
int getEndPosition()式文字列内のこの AST ノードの終了位置を返します。- 戻り値:
- 終了位置
isCompilable
default boolean isCompilable()このノードをバイトコードにコンパイルできるかどうかを判断します。各ノードでの推論は異なる場合がありますが、通常は、ノードの終了型記述子が既知であるかどうか、および関連する子ノードがコンパイル可能であるかどうかをチェックします。
デフォルトの実装は
false
を返します。このメソッドをオーバーライドする場合は、
generateCode(MethodVisitor, CodeFlow)
もオーバーライドする必要があります。- 戻り値:
- このノードをバイトコードにコンパイルできる場合は
true
- 導入:
- 6.2
- 関連事項:
generateCode
このノードのバイトコードを指定されたMethodVisitor
に生成します。コンパイル中の現在の式に関するコンテキスト情報は、提供された
CodeFlow
オブジェクトで入手できます。たとえば、現在スタック上にあるオブジェクトの型に関する情報などです。isCompilable()
がtrue
を返さない限り、このメソッドは呼び出されません。デフォルトでは、
isCompilable()
はfalse
を返すため、デフォルトの実装ではIllegalStateException
SE がスローされます。このメソッドをオーバーライドする場合は、
isCompilable()
もオーバーライドする必要があります。- パラメーター:
methodVisitor
- コードが生成される ASMMethodVisitor
codeFlow
- スタック上にあるものに関する情報を持つコンテキストオブジェクト- 導入:
- 6.2
- 関連事項: