クラス SpelNodeImpl

java.lang.ObjectSE
org.springframework.expression.spel.ast.SpelNodeImpl
実装されたすべてのインターフェース:
OpcodesSpelNode
既知の直属サブクラス
AssignBeanReferenceCompoundExpressionConstructorReferenceElvisFunctionReferenceIdentifierIndexerInlineListInlineMapLiteralMethodReferenceOperatorOperatorNotProjectionPropertyOrFieldReferenceQualifiedIdentifierSelectionTernaryTypeReferenceVariableReference

public abstract class SpelNodeImpl extends ObjectSE implements SpelNode, Opcodes
解析された Spring 式言語フォーマット式のすべての AST ノードの共通スーパー型。
導入:
3.0
作成者:
Andy Clement, Juergen Hoeller, Sam Brannen
  • フィールドの詳細

    • children

      protected SpelNodeImpl[] children
    • exitTypeDescriptor

      @Nullable protected volatile StringSE exitTypeDescriptor
      この式ノードの結果の型記述子を示します。これは、判明するとすぐに設定されます。リテラルノードの場合は、すぐにわかります。プロパティアクセスまたはメソッド呼び出しの場合、そのノードの 1 回の評価後に既知になります。

      記述子はバイトコード形式に似ていますが、操作が少し簡単です。末尾のセミコロンは含まれません(配列参照型以外の場合)。いくつかの例: Ljava/lang/String、I、[I

  • コンストラクターの詳細

  • メソッドの詳細

    • nextChildIs

      protected boolean nextChildIs(ClassSE<?>... classes)
      次の子が指定されたクラスの 1 つである場合、true を返します。
    • getValue

      @Nullable public final ObjectSE getValue(ExpressionState expressionState) throws EvaluationException
      インターフェースからコピーされた説明: SpelNode
      指定された式の状態のコンテキストで式ノードを評価し、値を返します。
      次で指定:
      インターフェース SpelNodegetValue 
      パラメーター:
      expressionState - 現在の式の状態 (コンテキストを含みます)
      戻り値:
      指定された状態に対して評価されたこのノードの値
      例外:
      EvaluationException
    • getTypedValue

      public final TypedValue getTypedValue(ExpressionState expressionState) throws EvaluationException
      インターフェースからコピーされた説明: SpelNode
      指定された式の状態のコンテキストで式ノードを評価し、型付きの値を返します。
      次で指定:
      インターフェース SpelNodegetTypedValue 
      パラメーター:
      expressionState - 現在の式の状態 (コンテキストを含みます)
      戻り値:
      指定された状態に対して評価されたこのノードの型値
      例外:
      EvaluationException
    • isWritable

      public boolean isWritable(ExpressionState expressionState) throws EvaluationException
      インターフェースからコピーされた説明: SpelNode
      この式ノードが setValue() 呼び出しをサポートするかどうかを決定します。
      次で指定:
      インターフェース SpelNodeisWritable 
      パラメーター:
      expressionState - 現在の式の状態 (コンテキストを含みます)
      戻り値:
      式ノードが setValue() を許可する場合は true
      例外:
      EvaluationException - ノードが書き込みをサポートしているかどうかを判断しようとして問題が発生した場合
    • setValue

      public void setValue(ExpressionState expressionState, @Nullable ObjectSE newValue) throws EvaluationException
      インターフェースからコピーされた説明: SpelNode
      式をノードに評価してから、そのノードに新しい値を設定します。例: 式がプロパティ参照に評価される場合、プロパティは新しい値に設定されます。
      次で指定:
      インターフェース SpelNodesetValue 
      パラメーター:
      expressionState - 現在の式の状態 (コンテキストを含みます)
      newValue - 新しい価値
      例外:
      EvaluationException - 式の評価または新しい値の設定で問題が発生した場合
    • setValueInternal

      public TypedValue setValueInternal(ExpressionState expressionState, SupplierSE<TypedValue> valueSupplier) throws EvaluationException
      式をノードに評価し、指定された SupplierSE によって作成された新しい値をそのノードに設定します。

      例: 式がプロパティ参照に評価される場合、プロパティは新しい値に設定されます。

      値を遅延計算する必要がある場合は、setValue(ExpressionState, Object) よりもこの方法を優先します。

      デフォルトでは、このメソッドは SpelEvaluationException をスローし、この機能を効果的に無効にします。サブクラスはこのメソッドをオーバーライドして、実際の実装を提供できます。

      パラメーター:
      expressionState - 現在の式の状態 (コンテキストを含みます)
      valueSupplier - 新しい価値の提供者
      例外:
      EvaluationException - 式の評価または新しい値の設定で問題が発生した場合
      導入:
      5.2.24
    • getChild

      public SpelNode getChild(int index)
      インターフェースからコピーされた説明: SpelNode
      Antlr Tree ノードではなく SpelNode を返すヘルパーメソッド。
      次で指定:
      インターフェース SpelNodegetChild 
      戻り値:
      SpelNode にキャストされた子ノード
    • getChildCount

      public int getChildCount()
      インターフェースからコピーされた説明: SpelNode
      このノードの子の数を返します。
      次で指定:
      インターフェース SpelNodegetChildCount 
      戻り値:
      子供の数
    • getObjectClass

      @Nullable public ClassSE<?> getObjectClass(@Nullable ObjectSE obj)
      インターフェースからコピーされた説明: SpelNode
      渡されたオブジェクトがすでにクラスオブジェクトでない限り、渡されたオブジェクトのクラスを判別します。
      次で指定:
      インターフェース SpelNodegetObjectClass 
      パラメーター:
      obj - 呼び出し元がクラスを必要とするオブジェクト
      戻り値:
      オブジェクトがクラスオブジェクトでない場合はオブジェクトのクラス、オブジェクトが null の場合は null 
    • getStartPosition

      public int getStartPosition()
      インターフェースからコピーされた説明: SpelNode
      この AST ノードの開始位置を式文字列で返します。
      次で指定:
      インターフェース SpelNodegetStartPosition 
      戻り値:
      開始位置
    • getEndPosition

      public int getEndPosition()
      インターフェースからコピーされた説明: SpelNode
      式文字列内のこの AST ノードの終了位置を返します。
      次で指定:
      インターフェース SpelNodegetEndPosition 
      戻り値:
      終了位置
    • isNullSafe

      public boolean isNullSafe()
      このノードが null セーフナビゲーション操作のターゲットであるかどうかを判断します。

      デフォルトの実装は false を返します。

      戻り値:
      true このノードが null セーフ操作のターゲットである場合
      導入:
      6.1.6
    • isCompilable

      public boolean isCompilable()
      ノードをバイトコードにコンパイルできるかどうかを確認します。各ノードの推論は異なる場合がありますが、通常、ノードの出口型記述子が既知であり、関連する子ノードがコンパイル可能かどうかを確認する必要があります。
      戻り値:
      このノードをバイトコードにコンパイルできる場合は true 
    • generateCode

      public void generateCode(MethodVisitor mv, CodeFlow cf)
      このノードのバイトコードを提供されたビジターに生成します。コンパイルされている現在の式に関するコンテキスト情報は、コードフローオブジェクトで利用できます。現在スタック上にあるオブジェクトの型に関する情報を含みます。
      パラメーター:
      mv - コードが生成される ASM MethodVisitor
      cf - スタックの内容に関する情報を持つコンテキストオブジェクト
    • getExitDescriptor

      @Nullable public StringSE getExitDescriptor()
    • getValue

      @Nullable protected final <T> T getValue(ExpressionState state, ClassSE<T> desiredReturnType) throws EvaluationException
      例外:
      EvaluationException
    • getValueRef

      protected ValueRef getValueRef(ExpressionState state) throws EvaluationException
      例外:
      EvaluationException
    • getValueInternal

      public abstract TypedValue getValueInternal(ExpressionState expressionState) throws EvaluationException
      例外:
      EvaluationException
    • generateCodeForArguments

      protected static void generateCodeForArguments(MethodVisitor mv, CodeFlow cf, MemberSE member, SpelNodeImpl[] arguments)
      指定されたメソッドの引数値の構築を処理するコードを生成します。このメソッドは、呼び出されたメソッドが varargs メソッドであるかどうかを考慮し、そうである場合、引数の値は適切に配列にパッケージ化されます。
      パラメーター:
      mv - コードを生成する必要があるメソッドビジター
      cf - 現在のコードフロー
      member - 引数が設定されているメソッドまたはコンストラクター
      arguments - 式で指定された引数値の式ノード
    • generateCodeForArgument

      protected static void generateCodeForArgument(MethodVisitor mv, CodeFlow cf, SpelNodeImpl argument, StringSE paramDesc)
      引数を求めてバイトコードを生成し、その後、ボクシング / アンボクシング / チェックキャストを実行して、期待されるパラメーター記述子と一致することを確認します。