Package org.eclipse.jdt.core.dom

# Class LambdaExpression

java.lang.Object
org.eclipse.jdt.core.dom.ASTNode
org.eclipse.jdt.core.dom.Expression
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
Restriction:
  This class is not intended to be instantiated by clients

## Field Summary

Fields
Modifier and Type
Field
Description
`static final ChildPropertyDescriptor`
`BODY_PROPERTY`
The "body" structural property of this node type (child type: `ASTNode`, must be either a `Block` or an `Expression`).
`static final ChildListPropertyDescriptor`
`PARAMETERS_PROPERTY`
The "parameters" structural property of this node type (element type: `VariableDeclaration`).
`static final SimplePropertyDescriptor`
`PARENTHESES_PROPERTY`
The "parentheses" structural property of this node type (type: `Boolean`).

### Fields inherited from class 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, CASE_DEFAULT_EXPRESSION, CAST_EXPRESSION, CATCH_CLAUSE, CHARACTER_LITERAL, CLASS_INSTANCE_CREATION, COMPILATION_UNIT, CONDITIONAL_EXPRESSION, CONSTRUCTOR_INVOCATION, CONTINUE_STATEMENT, CREATION_REFERENCE, DIMENSION, DO_STATEMENT, EitherOr_MultiPattern, EMPTY_STATEMENT, ENHANCED_FOR_STATEMENT, ENUM_CONSTANT_DECLARATION, ENUM_DECLARATION, EXPORTS_DIRECTIVE, EXPRESSION_METHOD_REFERENCE, EXPRESSION_STATEMENT, FIELD_ACCESS, FIELD_DECLARATION, FOR_STATEMENT, GUARDED_PATTERN, IF_STATEMENT, IMPORT_DECLARATION, INFIX_EXPRESSION, INITIALIZER, INSTANCEOF_EXPRESSION, INTERSECTION_TYPE, JAVADOC, JAVADOC_REGION, JAVADOC_TEXT_ELEMENT, LABELED_STATEMENT, LAMBDA_EXPRESSION, LINE_COMMENT, MALFORMED, MARKER_ANNOTATION, MEMBER_REF, MEMBER_VALUE_PAIR, METHOD_DECLARATION, METHOD_INVOCATION, METHOD_REF, METHOD_REF_PARAMETER, MODIFIER, MODULE_DECLARATION, MODULE_MODIFIER, MODULE_QUALIFIED_NAME, NAME_QUALIFIED_TYPE, NORMAL_ANNOTATION, NULL_LITERAL, NULL_PATTERN, NUMBER_LITERAL, OPENS_DIRECTIVE, ORIGINAL, PACKAGE_DECLARATION, PARAMETERIZED_TYPE, PARENTHESIZED_EXPRESSION, PATTERN_INSTANCEOF_EXPRESSION, POSTFIX_EXPRESSION, PREFIX_EXPRESSION, PRIMITIVE_TYPE, PROTECT, PROVIDES_DIRECTIVE, QUALIFIED_NAME, QUALIFIED_TYPE, RECORD_DECLARATION, RECORD_PATTERN, RECOVERED, REQUIRES_DIRECTIVE, 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_EXPRESSION, SWITCH_STATEMENT, SYNCHRONIZED_STATEMENT, TAG_ELEMENT, TAG_PROPERTY, TEXT_BLOCK, TEXT_ELEMENT, THIS_EXPRESSION, THROW_STATEMENT, TRY_STATEMENT, TYPE_DECLARATION, TYPE_DECLARATION_STATEMENT, TYPE_LITERAL, TYPE_METHOD_REFERENCE, TYPE_PARAMETER, TYPE_PATTERN, UNION_TYPE, UNNAMED_CLASS, USES_DIRECTIVE, VARIABLE_DECLARATION_EXPRESSION, VARIABLE_DECLARATION_FRAGMENT, VARIABLE_DECLARATION_STATEMENT, WHILE_STATEMENT, WILDCARD_TYPE, YIELD_STATEMENT`

## Method Summary

Modifier and Type
Method
Description
`ASTNode`
`getBody()`
Returns the body of this lambda expression.
`boolean`
`hasParentheses()`
Returns whether parentheses around the parameters are present or not.
`List`
`parameters()`
Returns the live ordered list of formal parameters of this lambda expression.
`static 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.eclipse.jdt.core.dom.Expression

`resolveBoxing, resolveConstantExpressionValue, resolveTypeBinding, resolveUnboxing`

### Methods inherited from class 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 Details

### 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 Details

### propertyDescriptors

public static 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 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

- all `SingleVariableDeclaration` (explicit type), or
- all `VariableDeclarationFragment` (inferred type).

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:
  `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