org.eclipse.wst.jsdt.core.dom

## Class VariableDeclaration

- java.lang.Object
- - org.eclipse.wst.jsdt.core.dom.ASTNode
  - - org.eclipse.wst.jsdt.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 local variable.

     VariableDeclaration:
        SingleVariableDeclaration
        VariableDeclarationFragment

See Also:
  `SingleVariableDeclaration`, `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 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 Instance Methods Abstract Methods Concrete Methods
`abstract int` `getExtraDimensions()` Returns the number of extra array dimensions over and above the explicitly-specified type.
`SimplePropertyDescriptor` `getExtraDimensionsProperty()` Returns structural property descriptor for the "extraDimensions" property of this node.
`abstract 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.
`abstract SimpleName` `getName()` Returns the name of the variable declared in this variable declaration.
`ChildPropertyDescriptor` `getNameProperty()` Returns structural property descriptor for the "name" property of this node.
`IVariableBinding` `resolveBinding()` Resolves and returns the binding for the variable declared in this variable declaration.
`abstract void` `setExtraDimensions(int dimensions)` Sets the number of extra array dimensions over and above the explicitly-specified type.
`abstract void` `setInitializer(Expression initializer)` Sets or clears the initializer of this variable declaration.
`abstract 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.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`

### Method Detail

#### getExtraDimensionsProperty

    public final SimplePropertyDescriptor getExtraDimensionsProperty()

Returns structural property descriptor for the "extraDimensions" property of this node.

Returns:
  the property descriptor

#### getInitializerProperty

    public final ChildPropertyDescriptor getInitializerProperty()

Returns structural property descriptor for the "initializer" property of this node.

Returns:
  the property descriptor

#### getNameProperty

    public final ChildPropertyDescriptor getNameProperty()

Returns structural property descriptor for the "name" property of this node.

Returns:
  the property descriptor

#### getName

    public abstract SimpleName getName()

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

Returns:
  the variable name node

#### setName

    public abstract 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:
  `java.lang.IllegalArgumentException` - if:
  - the node belongs to a different AST
  - the node already has a parent

#### getExtraDimensions

    public abstract 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.

Returns:
  the number of extra array dimensions

#### setExtraDimensions

    public abstract void setExtraDimensions(int dimensions)

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:
  `java.lang.IllegalArgumentException` - if the number of dimensions is negative

#### getInitializer

    public abstract 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 abstract 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:
  `java.lang.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