类 OpPlus
java.lang.Object
cn.taketoday.expression.spel.ast.SpelNodeImpl
cn.taketoday.expression.spel.ast.Operator
cn.taketoday.expression.spel.ast.OpPlus
The plus operator will:
- add numbers
- concatenate strings
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.
- 从以下版本开始:
- 4.0
- 作者:
- Andy Clement, Juergen Hoeller, Ivo Smid, Giovanni Dall'Oglio Risso, Harry Yang
-
嵌套类概要
从类继承的嵌套类/接口 cn.taketoday.expression.spel.ast.Operator
Operator.DescriptorComparison -
字段概要
字段修饰符和类型字段说明private static final intMaximum number of characters permitted in a concatenated string.从类继承的字段 cn.taketoday.expression.spel.ast.Operator
leftActualDescriptor, rightActualDescriptor从类继承的字段 cn.taketoday.expression.spel.ast.SpelNodeImpl
children, exitTypeDescriptor从接口继承的字段 cn.taketoday.bytecode.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_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, 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, JAVA_VERSION, 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, PRIVATE_FINAL_STATIC, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SOURCE_DEPRECATED, SOURCE_MASK, SWAP, SWITCH_STYLE_HASH, SWITCH_STYLE_HASHONLY, SWITCH_STYLE_TRIE, 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, V9 -
构造器概要
构造器 -
方法概要
修饰符和类型方法说明private voidcheckStringLength(String string) private TypedValueconcatenate(String leftString, String rightString) private static StringconvertTypedValueToString(TypedValue value, ExpressionState state) Convert operand value to string using registered converter or usingtoStringmethod.voidgenerateCode(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.String format for all operators is the same'(' [operand] [operator] [operand] ')'.private voidwalk(MethodVisitor mv, CodeFlow cf, SpelNodeImpl operand) Walk through a possible tree of nodes that combine strings and append them all to the same (on stack) StringBuilder.从类继承的方法 cn.taketoday.expression.spel.ast.Operator
equalityCheck, generateComparisonCode, getLeftOperand, getOperatorName, isCompilableOperatorUsingNumerics从类继承的方法 cn.taketoday.expression.spel.ast.SpelNodeImpl
generateCodeForArgument, generateCodeForArguments, getChild, getChildCount, getEndPosition, getExitDescriptor, getObjectClass, getStartPosition, getTypedValue, getValue, getValue, getValueRef, isWritable, nextChildIs, setValue, setValueInternal
-
字段详细资料
-
MAX_CONCATENATED_STRING_LENGTH
private static final int MAX_CONCATENATED_STRING_LENGTHMaximum number of characters permitted in a concatenated string.- 另请参阅:
-
-
构造器详细资料
-
OpPlus
-
-
方法详细资料
-
getValueInternal
- 指定者:
getValueInternal在类中SpelNodeImpl- 抛出:
EvaluationException
-
checkStringLength
-
concatenate
-
toStringAST
从类复制的说明:OperatorString format for all operators is the same'(' [operand] [operator] [operand] ')'.- 指定者:
toStringAST在接口中SpelNode- 覆盖:
toStringAST在类中Operator- 返回:
- the string form
-
getRightOperand
- 覆盖:
getRightOperand在类中Operator
-
convertTypedValueToString
Convert operand value to string using registered converter or usingtoStringmethod.- 参数:
value- typed value to be convertedstate- expression state- 返回:
TypedValueinstance converted toString
-
isCompilable
public boolean isCompilable()从类复制的说明: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.- 覆盖:
isCompilable在类中SpelNodeImpl- 返回:
trueif this node can be compiled to bytecode
-
walk
Walk through a possible tree of nodes that combine strings and append them all to the same (on stack) StringBuilder. -
generateCode
从类复制的说明: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.- 覆盖:
generateCode在类中SpelNodeImpl- 参数:
mv- the ASM MethodVisitor into which code should be generatedcf- a context object with info about what is on the stack
-