Package org.eclipse.jdt.core.dom

## Class TypeDeclarationStatement

- java.lang.Object
- - org.eclipse.jdt.core.dom.ASTNode
  - - org.eclipse.jdt.core.dom.Statement
    - - org.eclipse.jdt.core.dom.TypeDeclarationStatement

    public class TypeDeclarationStatement
    extends Statement

Local type declaration statement AST node type.

This kind of node is used to convert a type declaration node into a statement node by wrapping it.

     TypeDeclarationStatement:
        TypeDeclaration
        EnumDeclaration

Although allowed at the AST, not all arrangements of AST nodes are meaningful; in particular, only class and enum declarations are meaningful in the context of a block.

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

### Field Summary

Fields
`static ChildPropertyDescriptor` `DECLARATION_PROPERTY` The "declaration" structural property of this node type (child type: `AbstractTypeDeclaration`) (added in JLS3 API).
`static ChildPropertyDescriptor` `TYPE_DECLARATION_PROPERTY` Deprecated. In the JLS3 API, this property is replaced by `DECLARATION_PROPERTY`.

### 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, RECORD_DECLARATION, 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, TEXT_BLOCK, 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, YIELD_STATEMENT`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
`AbstractTypeDeclaration` `getDeclaration()` Returns the abstract type declaration of this local type declaration statement (added in JLS3 API).
`TypeDeclaration` `getTypeDeclaration()` Deprecated. In the JLS3 API, this method is replaced by `getDeclaration()`, which returns `AbstractTypeDeclaration` instead of `TypeDeclaration`.
`static List` `propertyDescriptors​(int apiLevel)` Returns a list of structural property descriptors for this node type.
`ITypeBinding` `resolveBinding()` Resolves and returns the binding for the class or interface declared in this type declaration statement.
`void` `setDeclaration​(AbstractTypeDeclaration decl)` Sets the abstract type declaration of this local type declaration statement (added in JLS3 API).
`void` `setTypeDeclaration​(TypeDeclaration decl)` Deprecated. In the JLS3 API, this method is replaced by `setDeclaration(AbstractTypeDeclaration)` which takes `AbstractTypeDeclaration` instead of `TypeDeclaration`.

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

#### TYPE_DECLARATION_PROPERTY

    public static final ChildPropertyDescriptor TYPE_DECLARATION_PROPERTY

Deprecated.
In the JLS3 API, this property is replaced by `DECLARATION_PROPERTY`.
The "typeDeclaration" structural property of this node type (child type: `TypeDeclaration`) (JLS2 API only).

Since:
  3.0

#### DECLARATION_PROPERTY

    public static final ChildPropertyDescriptor DECLARATION_PROPERTY

The "declaration" structural property of this node type (child type: `AbstractTypeDeclaration`) (added in JLS3 API).

Since:
  3.1

### Method Detail

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

#### getDeclaration

    public AbstractTypeDeclaration getDeclaration()

Returns the abstract type declaration of this local type declaration statement (added in JLS3 API).

Returns:
  the type declaration node
Since:
  3.1

#### setDeclaration

    public void setDeclaration​(AbstractTypeDeclaration decl)

Sets the abstract type declaration of this local type declaration statement (added in JLS3 API).

Parameters:
  `decl` - the type declaration node
Throws:
  `IllegalArgumentException` - if:
  - the node belongs to a different AST
  - the node already has a parent
  - a cycle in would be created
Since:
  3.1

#### getTypeDeclaration

    public TypeDeclaration getTypeDeclaration()

Deprecated.
In the JLS3 API, this method is replaced by `getDeclaration()`, which returns `AbstractTypeDeclaration` instead of `TypeDeclaration`.
Returns the type declaration of this local type declaration statement (JLS2 API only).

Returns:
  the type declaration node
Throws:
  `UnsupportedOperationException` - if this operation is used in an AST later than JLS2

#### setTypeDeclaration

    public void setTypeDeclaration​(TypeDeclaration decl)

Deprecated.
In the JLS3 API, this method is replaced by `setDeclaration(AbstractTypeDeclaration)` which takes `AbstractTypeDeclaration` instead of `TypeDeclaration`.
Sets the type declaration of this local type declaration statement (JLS2 API only).

Parameters:
  `decl` - the type declaration node
Throws:
  `IllegalArgumentException` - if:
  - the node belongs to a different AST
  - the node already has a parent
  - a cycle in would be created
  `UnsupportedOperationException` - if this operation is used in an AST later than JLS2

#### resolveBinding

    public ITypeBinding resolveBinding()

Resolves and returns the binding for the class or interface declared in this type declaration statement.

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