Package org.eclipse.jdt.core.dom

# Class BodyDeclaration

java.lang.Object
org.eclipse.jdt.core.dom.ASTNode
org.eclipse.jdt.core.dom.BodyDeclaration

Direct Known Subclasses:
  `AbstractTypeDeclaration`, `AnnotationTypeMemberDeclaration`, `EnumConstantDeclaration`, `FieldDeclaration`, `Initializer`, `MethodDeclaration`

public abstract class BodyDeclaration extends ASTNode
Abstract base class of all AST nodes that represent body declarations that may appear in the body of some kind of class or interface declaration, including anonymous class declarations, enumeration declarations, and enumeration constant declarations.

     BodyDeclaration:
                    AbstractTypeDeclaration
                            AnnotationTypeDeclaration
                            EnumDeclaration
                            TypeDeclaration (for classes and interfaces)
                    AnnotationTypeMemberDeclaration
                    EnumConstantDeclaration
                    FieldDeclaration
                    Initializer
                    MethodDeclaration (for methods and constructors)

All types of body declarations carry modifiers (and annotations), although they differ in which modifiers are allowed. Most types of body declarations can carry a doc comment; Initializer is the only ones that does not. The source range for body declarations always includes the doc comment if present.

Since:
  2.0

## 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, CASE_DEFAULT_EXPRESSION, 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, GUARDED_PATTERN, IF_STATEMENT, IMPORT_DECLARATION, INFIX_EXPRESSION, INITIALIZER, INSTANCEOF_EXPRESSION, INTERSECTION_TYPE, JAVADOC, JAVADOC_REGION, JAVADOC_TEXT_ELEMENT, 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, MODULE_QUALIFIED_NAME, NAME_QUALIFIED_TYPE, NORMAL_ANNOTATION, NULL_LITERAL, NULL_PATTERN, NUMBER_LITERAL, OPENS_DIRECTIVE, ORIGINAL, PACKAGE_DECLARATION, PARAMETERIZED_TYPE, PARENTHESIZED_EXPRESSION, PATTERN_INSTANCEOF_EXPRESSION, POSTFIX_EXPRESSION, PREFIX_EXPRESSION, PRIMITIVE_TYPE, PROTECT, PROVIDES_DIRECTIVE, QUALIFIED_NAME, QUALIFIED_TYPE, RECORD_DECLARATION, RECORD_PATTERN, 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, TAG_PROPERTY, TEXT_BLOCK, TEXT_ELEMENT, THIS_EXPRESSION, THROW_STATEMENT, TRY_STATEMENT, TYPE_DECLARATION, TYPE_DECLARATION_STATEMENT, TYPE_LITERAL, TYPE_METHOD_REFERENCE, TYPE_PARAMETER, TYPE_PATTERN, UNION_TYPE, USES_DIRECTIVE, VARIABLE_DECLARATION_EXPRESSION, VARIABLE_DECLARATION_FRAGMENT, VARIABLE_DECLARATION_STATEMENT, WHILE_STATEMENT, WILDCARD_TYPE, YIELD_STATEMENT`

## Method Summary

Modifier and Type
Method
Description
`Javadoc`
`getJavadoc()`
Returns the doc comment node.
`final ChildPropertyDescriptor`
`getJavadocProperty()`
Returns structural property descriptor for the "javadoc" property of this node (child type: `Javadoc`).
`int`
`getModifiers()`
Returns the modifiers explicitly specified on this declaration.
`final ChildListPropertyDescriptor`
`getModifiersProperty()`
Returns structural property descriptor for the "modifiers" property of this node as used in JLS3 (element type: `IExtendedModifier`).
`List`
`modifiers()`
Returns the live ordered list of modifiers and annotations of this declaration (added in JLS3 API).
`void`
`setJavadoc(Javadoc 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 `Modifier` nodes.

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

### getModifiersProperty

public final ChildListPropertyDescriptor getModifiersProperty()
Returns structural property descriptor for the "modifiers" property of this node as used in JLS3 (element type: `IExtendedModifier`).

Returns:
  the property descriptor
Since:
  3.1

### getJavadocProperty

public final ChildPropertyDescriptor getJavadocProperty()
Returns structural property descriptor for the "javadoc" property of this node (child type: `Javadoc`).

Returns:
  the property descriptor
Since:
  3.1

### getJavadoc

public Javadoc getJavadoc()
Returns the doc comment node.

Returns:
  the doc comment node, or `null` if none

### setJavadoc

public void setJavadoc(Javadoc docComment)
Sets or clears the doc comment node.

Parameters:
  `docComment` - the doc comment node, or `null` if none
Throws:
  `IllegalArgumentException` - if the doc comment string is invalid

### 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 `Modifier` nodes.
Sets the modifiers explicitly specified on this declaration (JLS2 API only).

Parameters:
  `modifiers` - the given modifiers (bit-wise "or" of `Modifier` constants)
Throws:
  `UnsupportedOperationException` - if this operation is used in an AST later than JLS2
See Also:
  - `Modifier`

### modifiers

public List modifiers()
Returns the live ordered list of modifiers and annotations of this declaration (added in JLS3 API).

Returns:
  the live list of modifiers and annotations (element type: `IExtendedModifier`)
Throws:
  `UnsupportedOperationException` - if this operation is used in a JLS2 AST
Since:
  3.1