类 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
-
字段概要
字段从类继承的字段 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 TypedValueexecuteFunctionBoundMethodHandle(ExpressionState state, MethodHandle methodHandle) Execute a function represented asjava.lang.invoke.MethodHandle.private TypedValueexecuteFunctionJLRMethod(ExpressionState state, Method method) Execute a function represented as ajava.lang.reflect.Method.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
-
executeFunctionJLRMethod
private TypedValue executeFunctionJLRMethod(ExpressionState state, Method method) throws EvaluationException Execute a function represented as ajava.lang.reflect.Method.- 参数:
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
-
executeFunctionBoundMethodHandle
private TypedValue executeFunctionBoundMethodHandle(ExpressionState state, MethodHandle methodHandle) throws EvaluationException Execute a function represented asjava.lang.invoke.MethodHandle. Method types that take no arguments (fully bound handles or static methods with no parameters) can use#invoke()which is the most efficient. Otherwise,#invokeWithArguments)is used.- 参数:
state- the expression evaluation statemethodHandle- the method 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
-