クラス 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
      このノードの n 番目の子を返します。
      次で指定:
      インターフェース SpelNodegetChild 
      戻り値:
      子ノード
      関連事項:
    • 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
    • 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

      @DeprecatedSE(since="6.2") protected static void generateCodeForArguments(MethodVisitor mv, CodeFlow cf, MemberSE member, SpelNodeImpl[] arguments)
      使用すべきではありません。
      指定された MemberSE (メソッドまたはコンストラクター) の引数値の構築を処理するコードを生成します。

      このメソッドは、メソッドまたはコンストラクターが可変引数を受け入れるように宣言されているかどうかを考慮し、そうである場合は引数値が適切に配列にパッケージ化されます。

      パラメーター:
      mv - コードを生成する必要があるメソッドビジター
      cf - 現在の CodeFlow
      member - 引数が設定されているメソッドまたはコンストラクター
      arguments - 式で指定された引数値の式ノード
    • generateCodeForArguments

      protected static void generateCodeForArguments(MethodVisitor mv, CodeFlow cf, ExecutableSE executable, SpelNodeImpl[] arguments)
      指定された ExecutableSE (メソッドまたはコンストラクター) の引数値の構築を処理するコードを生成します。

      このメソッドは、メソッドまたはコンストラクターが可変引数を受け入れるように宣言されているかどうかを考慮し、そうである場合は引数値が適切に配列にパッケージ化されます。

      パラメーター:
      mv - コードを生成する必要があるメソッドビジター
      cf - 現在の CodeFlow
      executable - 引数が設定されている ExecutableSE(メソッドまたはコンストラクター)
      arguments - 式で指定された引数値の式ノード
      導入:
      6.2
    • generateCodeForArgument

      @DeprecatedSE(since="6.2") protected static void generateCodeForArgument(MethodVisitor mv, CodeFlow cf, SpelNodeImpl argument, StringSE paramDesc)
      使用すべきではありません。
      指定された引数をスタックにロードするバイトコードを生成します。

      このメソッドは、スタック上の引数の型が指定された paramDesc と一致することを確認するために必要なボックス化、アンボックス化、チェックキャストも実行します。