インターフェース 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 voidgenerateCode(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このノードをバイトコードにコンパイルできるかどうかを判断します。booleanisWritable(ExpressionState expressionState) この式ノードが setValue() 呼び出しをサポートするかどうかを決定します。voidsetValue(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を返すため、デフォルトの実装ではIllegalStateExceptionSE がスローされます。このメソッドをオーバーライドする場合は、
isCompilable()もオーバーライドする必要があります。- パラメーター:
methodVisitor- コードが生成される ASMMethodVisitorcodeFlow- スタック上にあるものに関する情報を持つコンテキストオブジェクト- 導入:
- 6.2
- 関連事項: