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 型に変換されます。
Operator.DescriptorComparison
leftActualDescriptor, rightActualDescriptor
children, exitTypeDescriptor, pos
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MANDATED, ACC_MODULE, ACC_NATIVE, ACC_OPEN, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STATIC_PHASE, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_TRANSITIVE, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASM4, ASM5, ASM6, ASM7, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, H_GETFIELD, H_GETSTATIC, H_INVOKEINTERFACE, H_INVOKESPECIAL, H_INVOKESTATIC, H_INVOKEVIRTUAL, H_NEWINVOKESPECIAL, H_PUTFIELD, H_PUTSTATIC, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, IMUL, INEG, INSTANCEOF, INTEGER, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V_PREVIEW, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V10, V11, V12, V9
コンストラクターと説明 |
---|
OpMultiply(int pos, SpelNodeImpl... operands) |
修飾子と型 | メソッドと説明 |
---|---|
void | generateCode(MethodVisitor mv, CodeFlow cf) このノードのバイトコードを提供されたビジターに生成します。 |
TypedValue | getValueInternal(ExpressionState state) サポートされている特定の型のオペランドの multiply 演算子を直接ここに実装します。それ以外の場合、ここでサポートされていない型の登録済みオーバーローダーに委譲します。 |
boolean | isCompilable() ノードをバイトコードにコンパイルできるかどうかを確認します。 |
equalityCheck, generateComparisonCode, getLeftOperand, getOperatorName, getRightOperand, isCompilableOperatorUsingNumerics, toStringAST
generateCodeForArgument, generateCodeForArguments, getChild, getChildCount, getEndPosition, getExitDescriptor, getObjectClass, getStartPosition, getTypedValue, getValue, getValue, getValueRef, isWritable, nextChildIs, setValue
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public OpMultiply(int pos, SpelNodeImpl... operands)
public TypedValue getValueInternal(ExpressionState state) throws EvaluationException
multiply
演算子を直接ここに実装します。それ以外の場合、ここでサポートされていない型の登録済みオーバーローダーに委譲します。サポートされるオペランド型:
SpelNodeImpl
の getValueInternal
EvaluationException
public boolean isCompilable()
SpelNodeImpl
SpelNodeImpl
の isCompilable
true
public void generateCode(MethodVisitor mv, CodeFlow cf)
SpelNodeImpl
SpelNodeImpl
の generateCode
mv
- コードが生成される ASM MethodVisitorcf
- スタックの内容に関する情報を持つコンテキストオブジェクト