org.eclipse.wst.jsdt.core.dom

## Class VariableDeclarationStatement

- java.lang.Object
- - org.eclipse.wst.jsdt.core.dom.ASTNode
  - - org.eclipse.wst.jsdt.core.dom.ProgramElement
    - - org.eclipse.wst.jsdt.core.dom.Statement
      - - org.eclipse.wst.jsdt.core.dom.VariableDeclarationStatement

    public class VariableDeclarationStatement
    extends Statement

Local variable declaration statement AST node type.

This kind of node collects several variable declaration fragments (`VariableDeclarationFragment`) into a statement (`Statement`), all sharing the same modifiers and base type.

For JLS2:

     VariableDeclarationStatement:
        { Modifier } Type VariableDeclarationFragment
            { , VariableDeclarationFragment } ;

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

     VariableDeclarationStatement:
        { ExtendedModifier } Type VariableDeclarationFragment
            { , VariableDeclarationFragment } ;

Note: This type of node is a convenience of sorts. An equivalent way to represent the same statement is to use a `VariableDeclarationExpression` wrapped in an `ExpressionStatement`.

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 ChildPropertyDescriptor` `JAVADOC_PROPERTY`
`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 statement.
`JSdoc` `getJavadoc()` Returns the doc comment node.
`VariableKind` `getKind()`
`int` `getModifiers()` Returns the modifiers explicitly specified on this declaration.
`Type` `getType()` Returns the base type declared in this variable declaration statement.
`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.
`IVariableBinding` `resolveBinding()`
`void` `setJavadoc(JSdoc docComment)` Sets or clears the doc comment node.
`void` `setKind(VariableKind 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 statement to the given type.

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

`getLeadingComment, setLeadingComment`

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

#### JAVADOC_PROPERTY

    public static final ChildPropertyDescriptor JAVADOC_PROPERTY

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

#### getKind

    public VariableKind getKind()

#### setKind

    public void setKind(VariableKind kind)

#### getType

    public Type getType()

Returns the base type declared in this variable declaration statement.

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 statement 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

#### fragments

    public java.util.List fragments()

Returns the live list of variable declaration fragments in this statement. 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 statement (element type: `VariableDeclarationFragment`)

#### resolveBinding

    public IVariableBinding resolveBinding()

#### getJavadoc

    public JSdoc getJavadoc()

Returns the doc comment node.

Returns:
  the doc comment node, or `null` if none

#### setJavadoc

    public void setJavadoc(JSdoc docComment)

Sets or clears the doc comment node.

Parameters:
  `docComment` - the doc comment node, or `null` if none
Throws:
  `java.lang.IllegalArgumentException` - if the doc comment string is invalid