Class OpMinus
java.lang.Object
org.springframework.expression.spel.ast.SpelNodeImpl
org.springframework.expression.spel.ast.Operator
org.springframework.expression.spel.ast.OpMinus
The minus operator supports:
 
- subtraction of numbers
- subtraction of an int from a string of one character
 (effectively decreasing that character), so 'd' - 3 = 'a'
It can be used as a unary operator for numbers. The standard promotions are performed when the operand types vary (double-int=double). For other options it defers to the registered overloader.
- Since:
- 3.0
- Author:
- Andy Clement, Juergen Hoeller, Giovanni Dall'Oglio Risso, Sam Brannen, Semyon Danilov
- 
Nested Class SummaryNested classes/interfaces inherited from class org.springframework.expression.spel.ast.OperatorOperator.DescriptorComparison
- 
Field SummaryFields inherited from class org.springframework.expression.spel.ast.OperatorleftActualDescriptor, rightActualDescriptorFields 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, V9
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionvoidgenerateCode(MethodVisitor mv, CodeFlow cf) Generate the bytecode for this node into the supplied visitor.getValueInternal(ExpressionState state) booleanCheck whether a node can be compiled to bytecode.booleanDetermine if this operator is a unary minus and its child is a number literal.String format for all operators is the same'(' [operand] [operator] [operand] ')'.Methods inherited from class org.springframework.expression.spel.ast.OperatorequalityCheck, generateComparisonCode, getLeftOperand, getOperatorName, isCompilableOperatorUsingNumericsMethods inherited from class org.springframework.expression.spel.ast.SpelNodeImplgenerateCodeForArgument, generateCodeForArguments, getChild, getChildCount, getEndPosition, getExitDescriptor, getObjectClass, getStartPosition, getTypedValue, getValue, getValue, getValueRef, isNullSafe, isWritable, nextChildIs, setValue, setValueInternal
- 
Constructor Details- 
OpMinus
 
- 
- 
Method Details- 
isNegativeNumberLiteralpublic boolean isNegativeNumberLiteral()Determine if this operator is a unary minus and its child is a number literal.- Returns:
- trueif it is a negative number literal
- Since:
- 6.1
 
- 
getValueInternal- Specified by:
- getValueInternalin class- SpelNodeImpl
- Throws:
- EvaluationException
 
- 
toStringASTDescription copied from class:OperatorString format for all operators is the same'(' [operand] [operator] [operand] ')'.- Specified by:
- toStringASTin interface- SpelNode
- Overrides:
- toStringASTin class- Operator
- Returns:
- the string form
 
- 
getRightOperand- Overrides:
- getRightOperandin class- Operator
 
- 
isCompilablepublic boolean isCompilable()Description copied from class:SpelNodeImplCheck whether a node can be compiled to bytecode. The reasoning in each node may be different but will typically involve checking whether the exit type descriptor of the node is known and any relevant child nodes are compilable.- Overrides:
- isCompilablein class- SpelNodeImpl
- Returns:
- trueif this node can be compiled to bytecode
 
- 
generateCodeDescription copied from class:SpelNodeImplGenerate the bytecode for this node into the supplied visitor. Context info about the current expression being compiled is available in the codeflow object, e.g. including information about the type of the object currently on the stack.- Overrides:
- generateCodein class- SpelNodeImpl
- Parameters:
- mv- the ASM MethodVisitor into which code should be generated
- cf- a context object with info about what is on the stack
 
 
-