org.eclipse.wst.jsdt.core.dom
Class VariableDeclarationStatement

java.lang.Object
  extended by org.eclipse.wst.jsdt.core.dom.ASTNode
      extended by org.eclipse.wst.jsdt.core.dom.ProgramElement
          extended by org.eclipse.wst.jsdt.core.dom.Statement
              extended by 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
static ChildListPropertyDescriptor FRAGMENTS_PROPERTY
          The "fragments" structural property of this node type).
static ChildPropertyDescriptor JAVADOC_PROPERTY
           
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_TYPE, ASSERT_STATEMENT, ASSIGNMENT, BLOCK, BLOCK_COMMENT, BOOLEAN_LITERAL, BREAK_STATEMENT, CAST_EXPRESSION, CATCH_CLAUSE, CHARACTER_LITERAL, CLASS_INSTANCE_CREATION, CONDITIONAL_EXPRESSION, CONSTRUCTOR_INVOCATION, CONTINUE_STATEMENT, DO_STATEMENT, EMPTY_EXPRESSION, EMPTY_STATEMENT, ENHANCED_FOR_STATEMENT, EXPRESSION_STATEMENT, FIELD_ACCESS, FIELD_DECLARATION, FOR_IN_STATEMENT, FOR_STATEMENT, FUNCTION_DECLARATION, 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, MODIFIER, NULL_LITERAL, NUMBER_LITERAL, OBJECT_LITERAL, OBJECT_LITERAL_FIELD, ORIGINAL, PACKAGE_DECLARATION, PARAMETERIZED_TYPE, PARENTHESIZED_EXPRESSION, POSTFIX_EXPRESSION, PREFIX_EXPRESSION, PRIMITIVE_TYPE, PROTECT, QUALIFIED_NAME, QUALIFIED_TYPE, RECOVERED, REGULAR_EXPRESSION_LITERAL, RETURN_STATEMENT, SIMPLE_NAME, SIMPLE_TYPE, SINGLE_VARIABLE_DECLARATION, STRING_LITERAL, SUPER_CONSTRUCTOR_INVOCATION, SUPER_FIELD_ACCESS, SUPER_METHOD_INVOCATION, SWITCH_CASE, SWITCH_STATEMENT, TAG_ELEMENT, TEXT_ELEMENT, THIS_EXPRESSION, THROW_STATEMENT, TRY_STATEMENT, TYPE_DECLARATION, TYPE_DECLARATION_STATEMENT, TYPE_LITERAL, TYPE_PARAMETER, UNDEFINED_LITERAL, VARIABLE_DECLARATION_EXPRESSION, VARIABLE_DECLARATION_FRAGMENT, VARIABLE_DECLARATION_STATEMENT, WHILE_STATEMENT, WILDCARD_TYPE, WITH_STATEMENT
 
Method Summary
 java.util.List fragments()
          Returns the live list of variable declaration fragments in this statement.
 JSdoc getJavadoc()
          Returns the doc comment node.
 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 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, 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
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).

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

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 VariableDeclarationFragments; 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