org.eclipse.wst.jsdt.core.dom

## Class SingleVariableDeclaration

- java.lang.Object
- - org.eclipse.wst.jsdt.core.dom.ASTNode
  - - org.eclipse.wst.jsdt.core.dom.VariableDeclaration
    - - org.eclipse.wst.jsdt.core.dom.SingleVariableDeclaration

    public class SingleVariableDeclaration
    extends VariableDeclaration

Single variable declaration AST node type. Single variable declaration nodes are used in a limited number of places, including formal parameter lists and catch clauses. They are not used for field declarations and regular variable declaration statements. For JLS2:

     SingleVariableDeclaration:
        { Modifier } Type Identifier { [] } [ = Expression ]

For JLS3, the modifier flags were replaced by a list of modifier nodes (intermixed with annotations), and the variable arity indicator was added:

     SingleVariableDeclaration:
        { ExtendedModifier } Type [ ... ] Identifier { [] } [ = Expression ]

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 SimplePropertyDescriptor` `EXTRA_DIMENSIONS_PROPERTY` The "extraDimensions" structural property of this node type.
`static ChildPropertyDescriptor` `INITIALIZER_PROPERTY` The "initializer" structural property of this node type.
`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` `NAME_PROPERTY` Deprecated. use #PATTERN_PROPERTY
`static ChildPropertyDescriptor` `PATTERN_PROPERTY` The "name" structural property of this node type.
`static ChildPropertyDescriptor` `TYPE_PROPERTY` The "type" structural property of this node type.
`static SimplePropertyDescriptor` `VARARGS_PROPERTY` The "varargs" structural property of this node type (added in JLS3 API).

### 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
`int` `getExtraDimensions()` Returns the number of extra array dimensions over and above the explicitly-specified type.
`Expression` `getInitializer()` Returns the initializer of this variable declaration, or `null` if there is none.
`int` `getModifiers()` Returns the modifiers explicitly specified on this declaration.
`SimpleName` `getName()` Returns the name of the variable declared in this variable declaration.
`Name` `getPattern()` Returns the variable pattern for this node.
`Type` `getType()` Returns the type of the variable declared in this variable declaration, exclusive of any extra array dimensions.
`boolean` `isVarargs()` Returns whether this declaration declares the last parameter of a variable arity method (added in JLS3 API).
`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` `setExtraDimensions(int dimensions)` Sets the number of extra array dimensions over and above the explicitly-specified type.
`void` `setInitializer(Expression initializer)` Sets or clears the initializer of this variable declaration.
`void` `setModifiers(int modifiers)` Deprecated. In the JLS3 API, this method is replaced by `modifiers()` which contains a list of a `Modifier` nodes.
`void` `setName(SimpleName variableName)` Sets the name of the variable declared in this variable declaration to the given name.
`void` `setPattern(Name pattern)` Sets the pattern of the variable declared in this variable declaration to the given pattern.
`void` `setType(Type type)` Sets the type of the variable declared in this variable declaration to the given type, exclusive of any extra array dimensions.
`void` `setVarargs(boolean variableArity)` Sets whether this declaration declares the last parameter of a variable arity method (added in JLS3 API).

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

`getExtraDimensionsProperty, getInitializerProperty, getNameProperty, resolveBinding`

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

#### NAME_PROPERTY

    public static final ChildPropertyDescriptor NAME_PROPERTY

Deprecated. use #PATTERN_PROPERTY
The "name" structural property of this node type.

#### PATTERN_PROPERTY

    public static final ChildPropertyDescriptor PATTERN_PROPERTY

The "name" structural property of this node type.

Since:
  2.0

#### TYPE_PROPERTY

    public static final ChildPropertyDescriptor TYPE_PROPERTY

The "type" structural property of this node type.

#### VARARGS_PROPERTY

    public static final SimplePropertyDescriptor VARARGS_PROPERTY

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

#### EXTRA_DIMENSIONS_PROPERTY

    public static final SimplePropertyDescriptor EXTRA_DIMENSIONS_PROPERTY

The "extraDimensions" structural property of this node type.

#### INITIALIZER_PROPERTY

    public static final ChildPropertyDescriptor INITIALIZER_PROPERTY

The "initializer" structural property of this node type.

### 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 and formal parameter 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).

The following modifiers are meaningful for fields: public, private, protected, static, final, volatile, and transient. For local variable and formal parameter declarations, the only meaningful modifier is final.

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`

#### getName

    public SimpleName getName()

Description copied from class: `VariableDeclaration`
Returns the name of the variable declared in this variable declaration.

Specified by:
  `getName` in class `VariableDeclaration`
Returns:
  the variable name node

#### setName

    public void setName(SimpleName variableName)

Description copied from class: `VariableDeclaration`
Sets the name of the variable declared in this variable declaration to the given name.

Specified by:
  `setName` in class `VariableDeclaration`
Parameters:
  `variableName` - the new variable name

#### getPattern

    public Name getPattern()

Returns the variable pattern for this node.

Returns:

#### setPattern

    public void setPattern(Name pattern)

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

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

#### getType

    public Type getType()

Returns the type of the variable declared in this variable declaration, exclusive of any extra array dimensions.

Returns:
  the type

#### setType

    public void setType(Type type)

Sets the type of the variable declared in this variable declaration to the given type, exclusive of any extra array dimensions.

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

#### isVarargs

    public boolean isVarargs()

Returns whether this declaration declares the last parameter of a variable arity method (added in JLS3 API).

Note that the binding for the type `Foo`in the vararg method declaration `void fun(Foo... args)` is always for the type as written; i.e., the type binding for `Foo`. However, if you navigate from the method declaration to its method binding to the type binding for its last parameter, the type binding for the vararg parameter is always an array type (i.e., `Foo[]`) reflecting the way vararg methods get compiled.

Returns:
  `true` if this is a variable arity parameter declaration, and `false` otherwise
Throws:
  `java.lang.UnsupportedOperationException` - if this operation is used in a JLS2 AST

#### setVarargs

    public void setVarargs(boolean variableArity)

Sets whether this declaration declares the last parameter of a variable arity method (added in JLS3 API).

Parameters:
  `variableArity` - `true` if this is a variable arity parameter declaration, and `false` otherwise

#### getExtraDimensions

    public int getExtraDimensions()

Description copied from class: `VariableDeclaration`
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.

Specified by:
  `getExtraDimensions` in class `VariableDeclaration`
Returns:
  the number of extra array dimensions

#### setExtraDimensions

    public void setExtraDimensions(int dimensions)

Description copied from class: `VariableDeclaration`
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.

Specified by:
  `setExtraDimensions` in class `VariableDeclaration`
Parameters:
  `dimensions` - the number of array dimensions

#### getInitializer

    public Expression getInitializer()

Description copied from class: `VariableDeclaration`
Returns the initializer of this variable declaration, or `null` if there is none.

Specified by:
  `getInitializer` in class `VariableDeclaration`
Returns:
  the initializer expression node, or `null` if there is none

#### setInitializer

    public void setInitializer(Expression initializer)

Description copied from class: `VariableDeclaration`
Sets or clears the initializer of this variable declaration.

Specified by:
  `setInitializer` in class `VariableDeclaration`
Parameters:
  `initializer` - the initializer expression node, or `null` if there is none