クラス OpMultiply

実装されたすべてのインターフェース:
OpcodesSpelNode

public class OpMultiply extends Operator
multiply オペレーターを実装します。

コンバージョンとプロモーションは、Java 言語仕様のセクション 5.6.2 で定義されているように処理され、BigDecimal/BigInteger 管理が追加されます。

いずれかのオペランドが参照型である場合、ボックス化解除変換(セクション 5.1.8)が実行されます。次に:
どちらかのオペランドの型が BigDecimal の場合、もう一方は BigDecimal に変換されます。
どちらかのオペランドが double 型の場合、もう一方は double に変換されます。
それ以外の場合、一方のオペランドが float 型であれば、もう一方は float に変換されます。
どちらかのオペランドの型が BigInteger の場合、もう一方は BigInteger に変換されます。
それ以外の場合、一方のオペランドが long 型であれば、もう一方は long に変換されます。
それ以外の場合、両方のオペランドは int 型に変換されます。

導入:
3.0
作成者:
Andy Clement, Juergen Hoeller, Sam Brannen, Giovanni Dall'Oglio Risso
  • コンストラクターの詳細

    • OpMultiply

      public OpMultiply(int startPos, int endPos, SpelNodeImpl... operands)
  • メソッドの詳細

    • getValueInternal

      public TypedValue getValueInternal(ExpressionState state) throws EvaluationException
      サポートされている特定の型のオペランドの multiply 演算子を直接ここに実装します。それ以外の場合、ここでサポートされていない型の登録済みオーバーローダーに委譲します。

      サポートされるオペランド型:

      • 数字
      • 文字列と整数 ('abc' * 2 == 'abcabc' )
      次で指定:
      クラス SpelNodeImplgetValueInternal 
      例外:
      EvaluationException
    • isCompilable

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

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