org.eclipse.wst.jsdt.core.dom

## Class VariableDeclarationExpression

- java.lang.Object
- - org.eclipse.wst.jsdt.core.dom.ASTNode
  - - org.eclipse.wst.jsdt.core.dom.Expression
    - - org.eclipse.wst.jsdt.core.dom.VariableDeclarationExpression

    public class VariableDeclarationExpression
    extends Expression

Local variable declaration expression AST node type.

This kind of node collects together several variable declaration fragments (`VariableDeclarationFragment`) into a single expression (`Expression`), all sharing the same modifiers and base type. This type of node can be used as the initializer of a `ForStatement`, or wrapped in an `ExpressionStatement` to form the equivalent of a `VariableDeclarationStatement`.

For JLS2:

     VariableDeclarationExpression:
        { Modifier } Type VariableDeclarationFragment
             { , VariableDeclarationFragment }

For JLS3, the modifier flags were replaced by a list of modifier nodes (intermixed with annotations):

     VariableDeclarationExpression:
        { ExtendedModifier } Type VariableDeclarationFragment
             { , VariableDeclarationFragment }

Provisional API: This class/interface is part of an interim API that is still under development and expected to change significantly before reaching stability. It is being made available at this early stage to solicit feedback from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken (repeatedly) as the API evolves.

### Field Summary

Fields
`static ChildListPropertyDescriptor` `FRAGMENTS_PROPERTY` The "fragments" structural property of this node type).
`static SimplePropertyDescriptor` `KIND_PROPERTY` the kind structured property, as introduced in Ecmascript 2015
`static SimplePropertyDescriptor` `MODIFIERS_PROPERTY` The "modifiers" structural property of this node type (JLS2 API only).
`static ChildListPropertyDescriptor` `MODIFIERS2_PROPERTY` The "modifiers" structural property of this node type (added in JLS3 API).
`static ChildPropertyDescriptor` `TYPE_PROPERTY` The "type" structural property of this node type.

### Fields inherited from class org.eclipse.wst.jsdt.core.dom.ASTNode

`ANONYMOUS_CLASS_DECLARATION, ARRAY_ACCESS, ARRAY_CREATION, ARRAY_INITIALIZER, ARRAY_NAME, ARRAY_TYPE, ARROW_FUNCTION_EXPRESSION, ASSIGNMENT, ASSIGNMENT_NAME, BLOCK, BLOCK_COMMENT, BOOLEAN_LITERAL, BREAK_STATEMENT, CATCH_CLAUSE, CHARACTER_LITERAL, CLASS_INSTANCE_CREATION, CONDITIONAL_EXPRESSION, CONSTRUCTOR_INVOCATION, CONTINUE_STATEMENT, DEBUGGER_STATEMENT, DO_STATEMENT, EMPTY_EXPRESSION, EMPTY_STATEMENT, ENHANCED_FOR_STATEMENT, EXPORT_DECLARATION, EXPRESSION_STATEMENT, FIELD_ACCESS, FIELD_DECLARATION, FOR_IN_STATEMENT, FOR_OF_STATEMENT, FOR_STATEMENT, FUNCTION_DECLARATION, FUNCTION_DECLARATION_STATEMENT, FUNCTION_EXPRESSION, FUNCTION_INVOCATION, FUNCTION_REF, FUNCTION_REF_PARAMETER, IF_STATEMENT, IMPORT_DECLARATION, INFERRED_TYPE, INFIX_EXPRESSION, INITIALIZER, INSTANCEOF_EXPRESSION, JAVASCRIPT_UNIT, JSDOC, LABELED_STATEMENT, LINE_COMMENT, LIST_EXPRESSION, MALFORMED, MEMBER_REF, META_PROPERTY, MODIFIER, MODULE_SPECIFIER, NULL_LITERAL, NUMBER_LITERAL, OBJECT_LITERAL, OBJECT_LITERAL_FIELD, OBJECT_NAME, ORIGINAL, PACKAGE_DECLARATION, PARENTHESIZED_EXPRESSION, POSTFIX_EXPRESSION, PREFIX_EXPRESSION, PRIMITIVE_TYPE, PROTECT, QUALIFIED_NAME, QUALIFIED_TYPE, RECOVERED, REGULAR_EXPRESSION_LITERAL, REST_ELEMENT_NAME, RETURN_STATEMENT, SIMPLE_NAME, SIMPLE_TYPE, SINGLE_VARIABLE_DECLARATION, SPREAD_ELEMENT, STRING_LITERAL, SUPER_CONSTRUCTOR_INVOCATION, SUPER_FIELD_ACCESS, SUPER_METHOD_INVOCATION, SWITCH_CASE, SWITCH_STATEMENT, TAG_ELEMENT, TEMPLATE_ELEMENT, TEMPLATE_LITERAL, TEXT_ELEMENT, THIS_EXPRESSION, THROW_STATEMENT, TRY_STATEMENT, TYPE_DECLARATION, TYPE_DECLARATION_EXPRESSION, TYPE_DECLARATION_STATEMENT, TYPE_LITERAL, UNDEFINED_LITERAL, VARIABLE_DECLARATION_EXPRESSION, VARIABLE_DECLARATION_FRAGMENT, VARIABLE_DECLARATION_STATEMENT, WHILE_STATEMENT, WITH_STATEMENT, YIELD_EXPRESSION`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
`java.util.List` `fragments()` Returns the live list of variable declaration fragments in this expression.
`VariableKind` `getKind()` Returns the type of the declaration
`int` `getModifiers()` Returns the modifiers explicitly specified on this declaration.
`Type` `getType()` Returns the base type declared in this variable declaration.
`java.util.List` `modifiers()` Returns the live ordered list of modifiers and annotations of this declaration (added in JLS3 API).
`static java.util.List` `propertyDescriptors(int apiLevel)` Returns a list of structural property descriptors for this node type.
`void` `setKind(VariableKind variableKind)` Sets the declaration kind
`void` `setModifiers(int modifiers)` Deprecated. In the JLS3 API, this method is replaced by `modifiers()` which contains a list of a `Modifier` nodes.
`void` `setType(Type type)` Sets the base type declared in this variable declaration to the given type.

### Methods inherited from class org.eclipse.wst.jsdt.core.dom.Expression

`resolveBoxing, resolveConstantExpressionValue, resolveTypeBinding, resolveUnboxing`

### Methods inherited from class org.eclipse.wst.jsdt.core.dom.ASTNode

`accept, copySubtree, copySubtrees, delete, equals, getAST, getBodyChild, 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

#### MODIFIERS_PROPERTY

    public static final SimplePropertyDescriptor MODIFIERS_PROPERTY

The "modifiers" structural property of this node type (JLS2 API only).

#### MODIFIERS2_PROPERTY

    public static final ChildListPropertyDescriptor MODIFIERS2_PROPERTY

The "modifiers" structural property of this node type (added in JLS3 API).

#### TYPE_PROPERTY

    public static final ChildPropertyDescriptor TYPE_PROPERTY

The "type" structural property of this node type.

#### FRAGMENTS_PROPERTY

    public static final ChildListPropertyDescriptor FRAGMENTS_PROPERTY

The "fragments" structural property of this node type).

#### KIND_PROPERTY

    public static final SimplePropertyDescriptor KIND_PROPERTY

the kind structured property, as introduced in Ecmascript 2015

### 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`)

#### modifiers

    public java.util.List modifiers()

Returns the live ordered list of modifiers and annotations of this declaration (added in JLS3 API).

Note that the final modifier is the only meaningful modifier for local variable declarations.

Returns:
  the live list of modifiers and annotations (element type: `IExtendedModifier`)
Throws:
  `java.lang.UnsupportedOperationException` - if this operation is used in a JLS2 AST

#### getModifiers

    public int getModifiers()

Returns the modifiers explicitly specified on this declaration.

In the JLS3 API, this method is a convenience method that computes these flags from `modifiers()`.

Returns:
  the bit-wise or of `Modifier` constants
See Also:
  `Modifier`

#### setModifiers

    public void setModifiers(int modifiers)

Deprecated. In the JLS3 API, this method is replaced by `modifiers()` which contains a list of a `Modifier` nodes.
Sets the modifiers explicitly specified on this declaration (JLS2 API only).

Note that the final modifier is the only meaningful modifier for local variable declarations.

Parameters:
  `modifiers` - the given modifiers (bit-wise or of `Modifier` constants)
Throws:
  `java.lang.UnsupportedOperationException` - if this operation is used in an AST later than JLS2
See Also:
  `Modifier`

#### getType

    public Type getType()

Returns the base type declared in this variable declaration.

N.B. The individual child variable declaration fragments may specify additional array dimensions. So the type of the variable are not necessarily exactly this type.

Returns:
  the base type

#### setType

    public void setType(Type type)

Sets the base type declared in this variable declaration to the given type.

Parameters:
  `type` - the new base type
Throws:
  `java.lang.IllegalArgumentException` - if:
  - the node belongs to a different AST
  - the node already has a parent

#### setKind

    public void setKind(VariableKind variableKind)

Sets the declaration kind

Parameters:
  `variableKind` -

#### getKind

    public VariableKind getKind()

Returns the type of the declaration

Returns:

#### fragments

    public java.util.List fragments()

Returns the live list of variable declaration fragments in this expression. Adding and removing nodes from this list affects this node dynamically. All nodes in this list must be `VariableDeclarationFragment`s; attempts to add any other type of node will trigger an exception.

Returns:
  the live list of variable declaration fragments in this expression (element type: `VariableDeclarationFragment`)