类 Operator
- java.lang.Object
- org.springframework.expression.spel.ast.SpelNodeImpl
- org.springframework.expression.spel.ast.Operator
- 直接已知子类:
OpAnd
,OpDec
,OpDivide
,OpEQ
,OperatorBetween
,OperatorInstanceof
,OperatorMatches
,OperatorPower
,OpGE
,OpGT
,OpInc
,OpLE
,OpLT
,OpMinus
,OpModulus
,OpMultiply
,OpNE
,OpOr
,OpPlus
public abstract class Operator extends SpelNodeImpl
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.- 从以下版本开始:
- 3.0
- 作者:
- Andy Clement, Juergen Hoeller, Giovanni Dall'Oglio Risso
嵌套类概要
嵌套类 修饰符和类型 类 说明 protected static class
Operator.DescriptorComparison
A descriptor comparison encapsulates the result of comparing descriptor for two operands and describes at what level they are compatible.
字段概要
字段 修饰符和类型 字段 说明 protected String
leftActualDescriptor
protected String
rightActualDescriptor
从类继承的字段 org.springframework.expression.spel.ast.SpelNodeImpl
children, exitTypeDescriptor, pos
从接口继承的字段 org.springframework.asm.Opcodes
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, 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, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V1_9
构造器概要
构造器 构造器 说明 Operator(String payload, int pos, SpelNodeImpl... operands)
方法概要
所有方法 静态方法 实例方法 具体方法 修饰符和类型 方法 说明 static boolean
equalityCheck(EvaluationContext context, Object left, Object right)
Perform an equality check for the given operand values.protected void
generateComparisonCode(MethodVisitor mv, CodeFlow cf, int compInstruction1, int compInstruction2)
Numeric comparison operators share very similar generated code, only differing in two comparison instructions.SpelNodeImpl
getLeftOperand()
String
getOperatorName()
SpelNodeImpl
getRightOperand()
protected boolean
isCompilableOperatorUsingNumerics()
String
toStringAST()
String format for all operators is the same'(' [operand] [operator] [operand] ')'
.从类继承的方法 org.springframework.expression.spel.ast.SpelNodeImpl
generateCode, generateCodeForArgument, generateCodeForArguments, getChild, getChildCount, getEndPosition, getExitDescriptor, getObjectClass, getPreviousChild, getStartPosition, getTypedValue, getValue, getValue, getValueInternal, getValueRef, isCompilable, isWritable, nextChildIs, setValue
字段详细资料
leftActualDescriptor
protected String leftActualDescriptor
rightActualDescriptor
protected String rightActualDescriptor
构造器详细资料
Operator
public Operator(String payload, int pos, SpelNodeImpl... operands)
方法详细资料
getLeftOperand
public SpelNodeImpl getLeftOperand()
getRightOperand
public SpelNodeImpl getRightOperand()
getOperatorName
public final String getOperatorName()
toStringAST
public String toStringAST()
String format for all operators is the same'(' [operand] [operator] [operand] ')'
.- 返回:
- the string form of this AST node
isCompilableOperatorUsingNumerics
protected boolean isCompilableOperatorUsingNumerics()
generateComparisonCode
protected void generateComparisonCode(MethodVisitor mv, CodeFlow cf, int compInstruction1, int compInstruction2)
Numeric comparison operators share very similar generated code, only differing in two comparison instructions.
equalityCheck
public static boolean equalityCheck(EvaluationContext context, Object left, 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 static
here.- 参数:
context
- the current evaluation contextleft
- the left-hand operand valueright
- the right-hand operand value