类 FunctionReference
java.lang.Object
cn.taketoday.expression.spel.ast.SpelNodeImpl
cn.taketoday.expression.spel.ast.FunctionReference
A function reference is of the form "#someFunction(a,b,c)". Functions may be defined
in the context prior to the expression being evaluated. Functions may also be static
Java methods, registered in the context prior to invocation of the expression.
Functions are very simplistic. The arguments are not part of the definition (right now), so the names must be unique.
- 从以下版本开始:
- 4.0
- 作者:
- Andy Clement, Juergen Hoeller, Harry Yang
-
字段概要
字段从类继承的字段 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 TypedValueexecuteFunctionViaMethod(ExpressionState state, Method method) Execute a function represented as aMethod.private TypedValueexecuteFunctionViaMethodHandle(ExpressionState state, MethodHandle methodHandle) Execute a function represented asMethodHandle.voidgenerateCode(MethodVisitor mv, CodeFlow cf) Generate the bytecode for this node into the supplied visitor.private Object[]getArguments(ExpressionState state) Compute the arguments to the function, they are the children of this expression node.getValueInternal(ExpressionState state) booleanCheck whether a node can be compiled to bytecode.Return the string form the this AST node.从类继承的方法 cn.taketoday.expression.spel.ast.SpelNodeImpl
generateCodeForArgument, generateCodeForArguments, getChild, getChildCount, getEndPosition, getExitDescriptor, getObjectClass, getStartPosition, getTypedValue, getValue, getValue, getValueRef, isWritable, nextChildIs, setValue, setValueInternal
-
字段详细资料
-
name
-
method
-
-
构造器详细资料
-
FunctionReference
-
-
方法详细资料
-
getValueInternal
- 指定者:
getValueInternal在类中SpelNodeImpl- 抛出:
EvaluationException
-
executeFunctionViaMethod
private TypedValue executeFunctionViaMethod(ExpressionState state, Method method) throws EvaluationException Execute a function represented as aMethod.- 参数:
state- the expression evaluation statemethod- the method to invoke- 返回:
- the return value of the invoked Java method
- 抛出:
EvaluationException- if there is any problem invoking the method
-
executeFunctionViaMethodHandle
private TypedValue executeFunctionViaMethodHandle(ExpressionState state, MethodHandle methodHandle) throws EvaluationException Execute a function represented asMethodHandle.Method types that take no arguments (fully bound handles or static methods with no parameters) can use
MethodHandle#invoke()which is the most efficient. Otherwise,MethodHandle#invokeWithArguments()is used.- 参数:
state- the expression evaluation statemethodHandle- the method handle to invoke- 返回:
- the return value of the invoked Java method
- 抛出:
EvaluationException- if there is any problem invoking the method
-
toStringAST
从接口复制的说明:SpelNodeReturn the string form the this AST node.- 返回:
- the string form
-
getArguments
Compute the arguments to the function, they are the children of this expression node.- 返回:
- an array of argument values for the function call
- 抛出:
EvaluationException
-
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
-
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
-