public abstract class Operator extends SpelNodeImpl
修飾子と型 | クラスと説明 |
---|---|
protected static class | Operator.DescriptorComparison 記述子比較は、2 つのオペランドの記述子を比較した結果をカプセル化し、互換性のあるレベルを示します。 |
修飾子と型 | フィールドと説明 |
---|---|
protected StringSE | leftActualDescriptor |
protected StringSE | rightActualDescriptor |
children, exitTypeDescriptor
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_RECORD, 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, ASM10_EXPERIMENTAL, ASM4, ASM5, ASM6, ASM7, ASM8, ASM9, 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, SOURCE_DEPRECATED, SOURCE_MASK, 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, V13, V14, V15, V16, V17, V18, V9
コンストラクターと説明 |
---|
Operator(StringSE payload, int startPos, int endPos, SpelNodeImpl... operands) |
修飾子と型 | メソッドと説明 |
---|---|
static boolean | equalityCheck(EvaluationContext context, ObjectSE left, ObjectSE right) 指定されたオペランド値の等価性チェックを実行します。 |
protected void | generateComparisonCode(MethodVisitor mv, CodeFlow cf, int compInstruction1, int compInstruction2) 数値比較演算子は非常によく似た生成コードを共有し、2 つの比較命令のみが異なります。 |
SpelNodeImpl | getLeftOperand() |
StringSE | getOperatorName() |
SpelNodeImpl | getRightOperand() |
protected boolean | isCompilableOperatorUsingNumerics() |
StringSE | toStringAST() すべての演算子の文字列形式は同じ '(' [operand] [operator] [operand] ')' です。 |
generateCode, generateCodeForArgument, generateCodeForArguments, getChild, getChildCount, getEndPosition, getExitDescriptor, getObjectClass, getStartPosition, getTypedValue, getValue, getValue, getValueInternal, getValueRef, isCompilable, isWritable, nextChildIs, setValue
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public Operator(StringSE payload, int startPos, int endPos, SpelNodeImpl... operands)
public SpelNodeImpl getLeftOperand()
public SpelNodeImpl getRightOperand()
public final StringSE getOperatorName()
public StringSE toStringAST()
'(' [operand] [operator] [operand] ')'
です。protected boolean isCompilableOperatorUsingNumerics()
protected void generateComparisonCode(MethodVisitor mv, CodeFlow cf, int compInstruction1, int compInstruction2)
public static boolean equalityCheck(EvaluationContext context, @Nullable ObjectSE left, @Nullable ObjectSE right)
このメソッドは、サブクラスでのリフレクト比較に使用されるだけでなく、コンパイルされた式コードからも使用されるため、ここで public static
として宣言する必要があります。
context
- 現在の評価コンテキスト left
- 左側のオペランド値 right
- 右側のオペランド値