org.aspectj.org.eclipse.jdt.core.dom
Class LambdaExpression

java.lang.Object
  extended by org.aspectj.org.eclipse.jdt.core.dom.ASTNode
      extended by org.aspectj.org.eclipse.jdt.core.dom.Expression
          extended by org.aspectj.org.eclipse.jdt.core.dom.LambdaExpression

public class LambdaExpression
extends Expression

Lambda expression AST node type (added in JLS8 API).

 LambdaExpression:
    Identifier -> Body
    ( [ Identifier { , Identifier } ] ) -> Body
    ( [ FormalParameter { , FormalParameter } ] ) -> Body
 

The first two forms use VariableDeclarationFragment for the parameter or parameters, while the third form uses SingleVariableDeclaration.

The Body can be either a Block or an Expression.

Since:
3.10

Field Summary
static ChildPropertyDescriptor BODY_PROPERTY
          The "body" structural property of this node type (child type: ASTNode, must be either a Block or an Expression).
static ChildListPropertyDescriptor PARAMETERS_PROPERTY
          The "parameters" structural property of this node type (element type: VariableDeclaration).
static SimplePropertyDescriptor PARENTHESES_PROPERTY
          The "parentheses" structural property of this node type (type: Boolean).
 
Fields inherited from class org.aspectj.org.eclipse.jdt.core.dom.ASTNode
ANNOTATION_TYPE_DECLARATION, ANNOTATION_TYPE_MEMBER_DECLARATION, ANONYMOUS_CLASS_DECLARATION, ARRAY_ACCESS, ARRAY_CREATION, ARRAY_INITIALIZER, ARRAY_TYPE, ASSERT_STATEMENT, ASSIGNMENT, BLOCK, BLOCK_COMMENT, BOOLEAN_LITERAL, BREAK_STATEMENT, CAST_EXPRESSION, CATCH_CLAUSE, CHARACTER_LITERAL, CLASS_INSTANCE_CREATION, COMPILATION_UNIT, CONDITIONAL_EXPRESSION, CONSTRUCTOR_INVOCATION, CONTINUE_STATEMENT, CREATION_REFERENCE, DIMENSION, DO_STATEMENT, EMPTY_STATEMENT, ENHANCED_FOR_STATEMENT, ENUM_CONSTANT_DECLARATION, ENUM_DECLARATION, EXPRESSION_METHOD_REFERENCE, EXPRESSION_STATEMENT, FIELD_ACCESS, FIELD_DECLARATION, FOR_STATEMENT, IF_STATEMENT, IMPORT_DECLARATION, INFIX_EXPRESSION, INITIALIZER, INSTANCEOF_EXPRESSION, INTERSECTION_TYPE, JAVADOC, LABELED_STATEMENT, LAMBDA_EXPRESSION, LINE_COMMENT, MALFORMED, MARKER_ANNOTATION, MEMBER_REF, MEMBER_VALUE_PAIR, METHOD_DECLARATION, METHOD_INVOCATION, METHOD_REF, METHOD_REF_PARAMETER, MODIFIER, NAME_QUALIFIED_TYPE, NORMAL_ANNOTATION, NULL_LITERAL, NUMBER_LITERAL, ORIGINAL, PACKAGE_DECLARATION, PARAMETERIZED_TYPE, PARENTHESIZED_EXPRESSION, POSTFIX_EXPRESSION, PREFIX_EXPRESSION, PRIMITIVE_TYPE, PROTECT, QUALIFIED_NAME, QUALIFIED_TYPE, RECOVERED, RETURN_STATEMENT, SIMPLE_NAME, SIMPLE_TYPE, SINGLE_MEMBER_ANNOTATION, SINGLE_VARIABLE_DECLARATION, STRING_LITERAL, SUPER_CONSTRUCTOR_INVOCATION, SUPER_FIELD_ACCESS, SUPER_METHOD_INVOCATION, SUPER_METHOD_REFERENCE, SWITCH_CASE, SWITCH_STATEMENT, SYNCHRONIZED_STATEMENT, TAG_ELEMENT, TEXT_ELEMENT, THIS_EXPRESSION, THROW_STATEMENT, TRY_STATEMENT, TYPE_DECLARATION, TYPE_DECLARATION_STATEMENT, TYPE_LITERAL, TYPE_METHOD_REFERENCE, TYPE_PARAMETER, UNION_TYPE, VARIABLE_DECLARATION_EXPRESSION, VARIABLE_DECLARATION_FRAGMENT, VARIABLE_DECLARATION_STATEMENT, WHILE_STATEMENT, WILDCARD_TYPE
 
Method Summary
 ASTNode getBody()
          Returns the body of this lambda expression.
 boolean hasParentheses()
          Returns whether parentheses around the parameters are present or not.
 java.util.List parameters()
          Returns the live ordered list of formal parameters of this lambda expression.
static java.util.List propertyDescriptors(int apiLevel)
          Returns a list of structural property descriptors for this node type.
 IMethodBinding resolveMethodBinding()
          Resolves and returns the binding for the lambda expression
 void setBody(ASTNode body)
          Sets the body of this lambda expression.
 void setParentheses(boolean hasParentheses)
          Sets whether this lambda expression has parentheses around its parameters or not.
 
Methods inherited from class org.aspectj.org.eclipse.jdt.core.dom.Expression
resolveBoxing, resolveConstantExpressionValue, resolveTypeBinding, resolveUnboxing
 
Methods inherited from class org.aspectj.org.eclipse.jdt.core.dom.ASTNode
accept, copySubtree, copySubtrees, delete, equals, getAST, getFlags, getLength, getLocationInParent, getNodeType, getParent, getProperty, getRoot, getStartPosition, getStructuralProperty, hashCode, nodeClassForType, properties, setFlags, setProperty, setSourceRange, setStructuralProperty, structuralPropertiesForType, subtreeBytes, subtreeMatch, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

PARENTHESES_PROPERTY

public static final SimplePropertyDescriptor PARENTHESES_PROPERTY
The "parentheses" structural property of this node type (type: Boolean).

Note that parentheses are required unless parameters() contains just a single VariableDeclarationFragment. ASTRewrite may ignore this property if necessary.


PARAMETERS_PROPERTY

public static final ChildListPropertyDescriptor PARAMETERS_PROPERTY
The "parameters" structural property of this node type (element type: VariableDeclaration).

Note that all elements must be of the same type, either all SingleVariableDeclaration or all VariableDeclarationFragment.


BODY_PROPERTY

public static final ChildPropertyDescriptor BODY_PROPERTY
The "body" structural property of this node type (child type: ASTNode, must be either a Block or an Expression).

Method Detail

propertyDescriptors

public static java.util.List propertyDescriptors(int apiLevel)
Returns a list of structural property descriptors for this node type. Clients must not modify the result.

Parameters:
apiLevel - the API level; one of the AST.JLS* constants
Returns:
a list of property descriptors (element type: StructuralPropertyDescriptor)

hasParentheses

public boolean hasParentheses()
Returns whether parentheses around the parameters are present or not.

Note that parentheses are required unless parameters() contains just a single VariableDeclarationFragment. ASTRewrite may ignore this property if necessary.

Returns:
true if this lambda expression has parentheses around its parameters and false otherwise

setParentheses

public void setParentheses(boolean hasParentheses)
Sets whether this lambda expression has parentheses around its parameters or not.

Note that parentheses are required unless parameters() contains just a single VariableDeclarationFragment. ASTRewrite may ignore this property if necessary.

Parameters:
hasParentheses - true if this lambda expression has parentheses around its parameters and false otherwise

parameters

public java.util.List parameters()
Returns the live ordered list of formal parameters of this lambda expression. Note that all elements must be of the same type, either

Returns:
the live list of formal parameters of this lambda expression (element type: VariableDeclaration)

getBody

public ASTNode getBody()
Returns the body of this lambda expression.

Returns:
the lambda expression body, which can be either a Block or an Expression

setBody

public void setBody(ASTNode body)
Sets the body of this lambda expression.

Parameters:
body - a block node or an expression node
Throws:
java.lang.IllegalArgumentException - if:
  • the node belongs to a different AST
  • the node already has a parent
  • a cycle in would be created
  • body is neither a Block nor an Expression

resolveMethodBinding

public IMethodBinding resolveMethodBinding()
Resolves and returns the binding for the lambda expression

Note that bindings are generally unavailable unless requested when the AST is being built.

Returns:
the binding, or null if the binding cannot be resolved