Package org.eclipse.jdt.core.dom

# Class VariableDeclarationStatement

java.lang.Object
org.eclipse.jdt.core.dom.ASTNode
org.eclipse.jdt.core.dom.Statement
org.eclipse.jdt.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.

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

Since:
  2.0
Restriction:
  This class is not intended to be instantiated by clients.

## Field Summary

Fields
Modifier and Type
Field
Description
`static final ChildListPropertyDescriptor`
`FRAGMENTS_PROPERTY`
The "fragments" structural property of this node type (element type: `VariableDeclarationFragment`).
`static final SimplePropertyDescriptor`
`MODIFIERS_PROPERTY`
Deprecated.
In the JLS3 API, this property is replaced by `MODIFIERS2_PROPERTY`.
`static final ChildListPropertyDescriptor`
`MODIFIERS2_PROPERTY`
The "modifiers" structural property of this node type (element type: `IExtendedModifier`) (added in JLS3 API).
`static final ChildPropertyDescriptor`
`TYPE_PROPERTY`
The "type" structural property of this node type (child type: `Type`).

### 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, EMPTY_STATEMENT, ENHANCED_FOR_STATEMENT, ENHANCED_FOR_WITH_RECORD_PATTERN, 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, USES_DIRECTIVE, VARIABLE_DECLARATION_EXPRESSION, VARIABLE_DECLARATION_FRAGMENT, VARIABLE_DECLARATION_STATEMENT, WHILE_STATEMENT, WILDCARD_TYPE, YIELD_STATEMENT`

## Method Summary

Modifier and Type
Method
Description
`List`
`fragments()`
Returns the live list of variable declaration fragments in this statement.
`int`
`getModifiers()`
Returns the modifiers explicitly specified on this declaration.
`Type`
`getType()`
Returns the base type declared in this variable declaration statement.
`List`
`modifiers()`
Returns the live ordered list of modifiers and annotations of this declaration (added in JLS3 API).
`static List`
`propertyDescriptors(int apiLevel)`
Returns a list of structural property descriptors for this node type.
`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.jdt.core.dom.Statement

`getLeadingComment, setLeadingComment`

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

### MODIFIERS_PROPERTY

public static final SimplePropertyDescriptor MODIFIERS_PROPERTY
Deprecated.
In the JLS3 API, this property is replaced by `MODIFIERS2_PROPERTY`.
The "modifiers" structural property of this node type (type: `Integer`) (JLS2 API only).

Since:
  3.0

### MODIFIERS2_PROPERTY

public static final ChildListPropertyDescriptor MODIFIERS2_PROPERTY
The "modifiers" structural property of this node type (element type: `IExtendedModifier`) (added in JLS3 API).

Since:
  3.1

### TYPE_PROPERTY

public static final ChildPropertyDescriptor TYPE_PROPERTY
The "type" structural property of this node type (child type: `Type`).

Since:
  3.0

### FRAGMENTS_PROPERTY

public static final ChildListPropertyDescriptor FRAGMENTS_PROPERTY
The "fragments" structural property of this node type (element type: `VariableDeclarationFragment`).

Since:
  3.0

## 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`)
Since:
  3.0

### modifiers

public 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:
  `UnsupportedOperationException` - if this operation is used in a JLS2 AST
Since:
  3.1

### 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:
  `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 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:
  `IllegalArgumentException` - if:
  - the node belongs to a different AST
  - the node already has a parent

### fragments

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