org.eclipse.jdt.core.dom

## Class VariableDeclaration

- java.lang.Object
- - org.eclipse.jdt.core.dom.ASTNode
  - - org.eclipse.jdt.core.dom.VariableDeclaration

Direct Known Subclasses:
  SingleVariableDeclaration, VariableDeclarationFragment

    public abstract class VariableDeclaration
    extends ASTNode

Abstract base class of all AST node types that declare a single variable.

     VariableDeclaration:
        SingleVariableDeclaration
        VariableDeclarationFragment

Since:
  2.0
See Also:
  `SingleVariableDeclaration`, `VariableDeclarationFragment`

### Field Summary

### 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, 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, EXPORTS_DIRECTIVE, 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, MODULE_DECLARATION, MODULE_MODIFIER, NAME_QUALIFIED_TYPE, NORMAL_ANNOTATION, NULL_LITERAL, NUMBER_LITERAL, OPENS_DIRECTIVE, ORIGINAL, PACKAGE_DECLARATION, PARAMETERIZED_TYPE, PARENTHESIZED_EXPRESSION, POSTFIX_EXPRESSION, PREFIX_EXPRESSION, PRIMITIVE_TYPE, PROTECT, PROVIDES_DIRECTIVE, QUALIFIED_NAME, QUALIFIED_TYPE, 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_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, USES_DIRECTIVE, VARIABLE_DECLARATION_EXPRESSION, VARIABLE_DECLARATION_FRAGMENT, VARIABLE_DECLARATION_STATEMENT, WHILE_STATEMENT, WILDCARD_TYPE`

### Method Summary

All Methods Instance Methods Concrete Methods Deprecated Methods
`List` `extraDimensions()` Returns the live ordered list of extra dimensions with optional annotations (added in JLS8 API).
`int` `getExtraDimensions()` Returns the number of extra array dimensions over and above the explicitly-specified type.
`ChildListPropertyDescriptor` `getExtraDimensions2Property()` Returns the structural property descriptor for the "extraDimensions" property of this node (element type: `Dimension`) (added in JLS8 API).
`SimplePropertyDescriptor` `getExtraDimensionsProperty()` Deprecated. In JLS8 and later, use `getExtraDimensions2Property()` instead.
`Expression` `getInitializer()` Returns the initializer of this variable declaration, or `null` if there is none.
`ChildPropertyDescriptor` `getInitializerProperty()` Returns structural property descriptor for the "initializer" property of this node (child type: `Expression`).
`SimpleName` `getName()` Returns the name of the variable declared in this variable declaration.
`ChildPropertyDescriptor` `getNameProperty()` Returns the structural property descriptor for the "name" property of this node (child type: `SimpleName`).
`IVariableBinding` `resolveBinding()` Resolves and returns the binding for the variable declared in this variable declaration.
`void` `setExtraDimensions(int dimensions)` Deprecated. In the JLS8 API, this method is replaced by `extraDimensions()` which contains a list of `Dimension` nodes.
`void` `setInitializer(Expression initializer)` Sets or clears the initializer of this variable declaration.
`void` `setName(SimpleName variableName)` Sets the name of the variable declared in this variable declaration to the given name.

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

### Method Detail

#### getNameProperty

    public final ChildPropertyDescriptor getNameProperty()

Returns the structural property descriptor for the "name" property of this node (child type: `SimpleName`).

Returns:
  the property descriptor
Since:
  3.1

#### getExtraDimensionsProperty

    public final SimplePropertyDescriptor getExtraDimensionsProperty()

Deprecated. In JLS8 and later, use `getExtraDimensions2Property()` instead.
Returns the structural property descriptor for the "extraDimensions" property of this node (type: `Integer`) (below JLS8 only).

Returns:
  the property descriptor
Since:
  3.1

#### getExtraDimensions2Property

    public final ChildListPropertyDescriptor getExtraDimensions2Property()

Returns the structural property descriptor for the "extraDimensions" property of this node (element type: `Dimension`) (added in JLS8 API).

Returns:
  the property descriptor
Since:
  3.10

#### getInitializerProperty

    public final ChildPropertyDescriptor getInitializerProperty()

Returns structural property descriptor for the "initializer" property of this node (child type: `Expression`).

Returns:
  the property descriptor
Since:
  3.1

#### getName

    public SimpleName getName()

Returns the name of the variable declared in this variable declaration.

Returns:
  the variable name node

#### setName

    public void setName(SimpleName variableName)

Sets the name of the variable declared in this variable declaration to the given name.

Parameters:
  `variableName` - the new variable name
Throws:
  `IllegalArgumentException` - if:
  - the node belongs to a different AST
  - the node already has a parent

#### getExtraDimensions

    public int getExtraDimensions()

Returns the number of extra array dimensions over and above the explicitly-specified type.

For example, `int x[][]` has a type of `int` and two extra array dimensions; `int[][] x` has a type of `int[][]` and zero extra array dimensions. The two constructs have different ASTs, even though there are really syntactic variants of the same variable declaration.

In the JLS8 API, this method is a convenience method that counts `extraDimensions()`.

Returns:
  the number of extra array dimensions
Since:
  2.1

#### setExtraDimensions

    public void setExtraDimensions(int dimensions)

Deprecated. In the JLS8 API, this method is replaced by `extraDimensions()` which contains a list of `Dimension` nodes.
Sets the number of extra array dimensions over and above the explicitly-specified type.

For example, `int x[][]` has a type of `int` and two extra array dimensions; `int[][] x` has a type of `int[][]` and zero extra array dimensions. The two constructs have different ASTs, even though there are really syntactic variants of the same variable declaration.

Parameters:
  `dimensions` - the number of array dimensions
Throws:
  `IllegalArgumentException` - if the number of dimensions is negative
  `UnsupportedOperationException` - if this operation is used in a JLS8 or later AST
Since:
  2.1

#### extraDimensions

    public List extraDimensions()

Returns the live ordered list of extra dimensions with optional annotations (added in JLS8 API).

Returns:
  the live list of extra dimensions with optional annotations (element type: `Dimension`)
Throws:
  `UnsupportedOperationException` - if this operation is used below JLS8
Since:
  3.10

#### getInitializer

    public Expression getInitializer()

Returns the initializer of this variable declaration, or `null` if there is none.

Returns:
  the initializer expression node, or `null` if there is none

#### setInitializer

    public void setInitializer(Expression initializer)

Sets or clears the initializer of this variable declaration.

Parameters:
  `initializer` - the initializer expression node, or `null` if there is none
Throws:
  `IllegalArgumentException` - if:
  - the node belongs to a different AST
  - the node already has a parent
  - a cycle in would be created

#### resolveBinding

    public IVariableBinding resolveBinding()

Resolves and returns the binding for the variable declared in this variable declaration.

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