Class Operator
java.lang.Object
org.springframework.expression.spel.ast.SpelNodeImpl
org.springframework.expression.spel.ast.Operator
- Direct Known Subclasses:
- OpAnd,- OpDec,- OpDivide,- OpEQ,- OperatorBetween,- OperatorInstanceof,- OperatorMatches,- OperatorPower,- OpGE,- OpGT,- OpInc,- OpLE,- OpLT,- OpMinus,- OpModulus,- OpMultiply,- OpNE,- OpOr,- OpPlus
Common supertype for operators that operate on either one or two operands.
 In the case of multiply or divide there would be two operands, but for
 unary plus or minus, there is only one.
- Since:
- 3.0
- Author:
- Andy Clement, Juergen Hoeller, Giovanni Dall'Oglio Risso, Sam Brannen
- 
Nested Class SummaryNested ClassesModifier and TypeClassDescriptionprotected static final classA descriptor comparison encapsulates the result of comparing descriptor for two operands and describes at what level they are compatible.
- 
Field SummaryFieldsModifier and TypeFieldDescriptionFields inherited from class org.springframework.expression.spel.ast.SpelNodeImplchildren, exitTypeDescriptorFields inherited from interface org.springframework.asm.OpcodesAALOAD, 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, V19, V20, V21, V22, V23, V24, V9
- 
Constructor SummaryConstructorsConstructorDescriptionOperator(String payload, int startPos, int endPos, SpelNodeImpl... operands) 
- 
Method SummaryModifier and TypeMethodDescriptionstatic booleanequalityCheck(EvaluationContext context, @Nullable Object left, @Nullable Object right) Perform an equality check for the given operand values.protected voidgenerateComparisonCode(MethodVisitor mv, CodeFlow cf, int compInstruction1, int compInstruction2) Numeric comparison operators share very similar generated code, only differing in two comparison instructions.final Stringprotected booleanString format for all operators is the same'(' [operand] [operator] [operand] ')'.Methods inherited from class org.springframework.expression.spel.ast.SpelNodeImplgenerateCodeForArgument, generateCodeForArguments, generateCodeForArguments, getChild, getChildCount, getEndPosition, getExitDescriptor, getObjectClass, getStartPosition, getTypedValue, getValue, getValue, getValueInternal, getValueRef, isNullSafe, isWritable, nextChildIs, setValue, setValueInternalMethods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.expression.spel.SpelNodegenerateCode, isCompilable
- 
Field Details- 
leftActualDescriptor
- 
rightActualDescriptor
 
- 
- 
Constructor Details- 
Operator
 
- 
- 
Method Details- 
getLeftOperand
- 
getRightOperand
- 
getOperatorName
- 
toStringASTString format for all operators is the same'(' [operand] [operator] [operand] ')'.- Returns:
- the string form
 
- 
isCompilableOperatorUsingNumericsprotected boolean isCompilableOperatorUsingNumerics()
- 
generateComparisonCodeprotected void generateComparisonCode(MethodVisitor mv, CodeFlow cf, int compInstruction1, int compInstruction2) Numeric comparison operators share very similar generated code, only differing in two comparison instructions.
- 
equalityCheckpublic static boolean equalityCheck(EvaluationContext context, @Nullable Object left, @Nullable Object right) Perform an equality check for the given operand values.This method is not just used for reflective comparisons in subclasses but also from compiled expression code, which is why it needs to be declared as public statichere.- Parameters:
- context- the current evaluation context
- left- the left-hand operand value
- right- the right-hand operand value
 
 
-