类 SpelNodeImpl

    • 字段详细资料

      • pos

        protected int pos
      • exitTypeDescriptor

        protected volatile String exitTypeDescriptor
        Indicates the type descriptor for the result of this expression node. This is set as soon as it is known. For a literal node it is known immediately. For a property access or method invocation it is known after one evaluation of that node.

        The descriptor is like the bytecode form but is slightly easier to work with. It does not include the trailing semicolon (for non array reference types). Some examples: Ljava/lang/String, I, [I

    • 方法详细资料

      • nextChildIs

        protected boolean nextChildIs​(Class<?>... clazzes)
        返回:
        true if the next child is one of the specified classes
      • isWritable

        public boolean isWritable​(ExpressionState expressionState)
                           throws EvaluationException
        从接口复制的说明: SpelNode
        Determine if this expression node will support a setValue() call.
        指定者:
        isWritable 在接口中 SpelNode
        参数:
        expressionState - the current expression state (includes the context)
        返回:
        true if the expression node will allow setValue()
        抛出:
        EvaluationException - if something went wrong trying to determine if the node supports writing
      • setValue

        public void setValue​(ExpressionState expressionState,
                             Object newValue)
                      throws EvaluationException
        从接口复制的说明: SpelNode
        Evaluate the expression to a node and then set the new value on that node. For example, if the expression evaluates to a property reference, then the property will be set to the new value.
        指定者:
        setValue 在接口中 SpelNode
        参数:
        expressionState - the current expression state (includes the context)
        newValue - the new value
        抛出:
        EvaluationException - if any problem occurs evaluating the expression or setting the new value
      • getChild

        public SpelNode getChild​(int index)
        从接口复制的说明: SpelNode
        Helper method that returns a SpelNode rather than an Antlr Tree node.
        指定者:
        getChild 在接口中 SpelNode
        返回:
        the child node cast to a SpelNode
      • getObjectClass

        public Class<?> getObjectClass​(Object obj)
        从接口复制的说明: SpelNode
        Determine the class of the object passed in, unless it is already a class object.
        指定者:
        getObjectClass 在接口中 SpelNode
        参数:
        obj - the object that the caller wants the class of
        返回:
        the class of the object if it is not already a class object, or null if the object is null
      • isCompilable

        public boolean isCompilable()
        Check 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.
        返回:
        true if this node can be compiled to bytecode
      • generateCode

        public void generateCode​(MethodVisitor mv,
                                 CodeFlow cf)
        Generate the bytecode for this node into the supplied visitor. Context info about the current expression being compiled is available in the codeflow object. For example it will include information about the type of the object currently on the stack.
        参数:
        mv - the ASM MethodVisitor into which code should be generated
        cf - a context object with info about what is on the stack
      • generateCodeForArguments

        protected static void generateCodeForArguments​(MethodVisitor mv,
                                                       CodeFlow cf,
                                                       Member member,
                                                       SpelNodeImpl[] arguments)
        Generate code that handles building the argument values for the specified method. This method will take account of whether the invoked method is a varargs method and if it is then the argument values will be appropriately packaged into an array.
        参数:
        mv - the method visitor where code should be generated
        cf - the current codeflow
        member - the method or constructor for which arguments are being setup
        arguments - the expression nodes for the expression supplied argument values