Package org.eclipse.jdt.core.dom

## Class ModuleDeclaration

- java.lang.Object
- - org.eclipse.jdt.core.dom.ASTNode
  - - org.eclipse.jdt.core.dom.ModuleDeclaration

    public class ModuleDeclaration
    extends ASTNode

Module declaration AST node type representing the module descriptor file (added in JLS9 API).

     ModuleDeclaration:
      [ Javadoc ] { Annotation } [ open ] module Name {
            { RequiresDirective | ExportsDirective | OpensDirective | UsesDirective | ProvidesDirective }
      }

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

### Field Summary

Fields
`static ChildListPropertyDescriptor` `ANNOTATIONS_PROPERTY` The "annotations" structural property of this node type (element type: `Annotation`).
`static ChildPropertyDescriptor` `JAVADOC_PROPERTY` The "javadoc" structural property of this node type (child type: `Javadoc`).
`static ChildListPropertyDescriptor` `MODULE_DIRECTIVES_PROPERTY` The "moduleDirectives" structural property of this node type (element type: `ModuleDirective`).
`static ChildPropertyDescriptor` `NAME_PROPERTY` The "name" structural property of this node type (child type: `Name`).
`static SimplePropertyDescriptor` `OPEN_PROPERTY` The "open" structural property of this node type (type: `Boolean`).

### 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, 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, 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, TYPE_PATTERN, 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
`List` `annotations()` Returns the live ordered list of annotations of this declaration.
`Javadoc` `getJavadoc()` Returns the doc comment node.
`Name` `getName()` Returns the name of this module declaration.
`boolean` `isOpen()` Returns whether this module declaration is open or not.
`List` `moduleStatements()` Returns the live list of statements in this module.
`static List` `propertyDescriptors​(int apiLevel)` Returns a list of structural property descriptors for this node type.
`IModuleBinding` `resolveBinding()` Resolves and returns the binding for the module.
`void` `setJavadoc​(Javadoc docComment)` Sets or clears the doc comment node.
`void` `setName​(Name name)` Sets the module name in to the given name.
`void` `setOpen​(boolean isOpen)` Sets whether this module declaration is open or not.

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

#### JAVADOC_PROPERTY

    public static final ChildPropertyDescriptor JAVADOC_PROPERTY

The "javadoc" structural property of this node type (child type: `Javadoc`).

#### ANNOTATIONS_PROPERTY

    public static final ChildListPropertyDescriptor ANNOTATIONS_PROPERTY

The "annotations" structural property of this node type (element type: `Annotation`).

#### OPEN_PROPERTY

    public static final SimplePropertyDescriptor OPEN_PROPERTY

The "open" structural property of this node type (type: `Boolean`).

#### NAME_PROPERTY

    public static final ChildPropertyDescriptor NAME_PROPERTY

The "name" structural property of this node type (child type: `Name`).

#### MODULE_DIRECTIVES_PROPERTY

    public static final ChildListPropertyDescriptor MODULE_DIRECTIVES_PROPERTY

The "moduleDirectives" structural property of this node type (element type: `ModuleDirective`).

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

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

#### annotations

    public List annotations()

Returns the live ordered list of annotations of this declaration.

Returns:
  the live list of annotations (element type: `Annotation`)

#### isOpen

    public boolean isOpen()

Returns whether this module declaration is open or not.

Returns:
  `true` if this is open, else `false`

#### setOpen

    public void setOpen​(boolean isOpen)

Sets whether this module declaration is open or not.

Parameters:
  `isOpen` - `true` if this is an open module, and `false` if not

#### getName

    public Name getName()

Returns the name of this module declaration.

Returns:
  the module name

#### setName

    public void setName​(Name name)

Sets the module name in to the given name.

Parameters:
  `name` - the new module name
Throws:
  `IllegalArgumentException` - if:
  - the node belongs to a different AST
  - the node already has a parent

#### moduleStatements

    public List moduleStatements()

Returns the live list of statements in this module. Adding and removing nodes from this list affects this node dynamically. All nodes in this list must be `ModuleDirective`s; attempts to add any other type of node will trigger an exception.

Returns:
  the live list of statements in this module declaration (element type: `ModuleDirective`)

#### resolveBinding

    public IModuleBinding resolveBinding()

Resolves and returns the binding for the module.

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