ModuleElement (Java SE 12 & JDK 12 )
Keywords: javax.lang.model.element.ModuleElement interface

Module java.compiler
Package javax.lang.model.element

## Interface ModuleElement

- All Superinterfaces:
    `AnnotatedConstruct`, `Element`, `QualifiedNameable`

      public interface ModuleElement
      extends Element, QualifiedNameable

  Represents a module program element. Provides access to information about the module, its directives, and its members.
  Since:
    9
  See Also:
    `Elements.getModuleOf(javax.lang.model.element.Element)`
  See The Java™ Language Specification:
    7.7 Module Declarations

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface | Description
    --- | --- | ---
    `static interface` | `ModuleElement.Directive` | Represents a directive within the declaration of this module.
    `static class` | `ModuleElement.DirectiveKind` | The `kind` of a directive.
    `static interface` | `ModuleElement.DirectiveVisitor<R,​P>` | A visitor of module directives, in the style of the visitor design pattern.
    `static interface` | `ModuleElement.ExportsDirective` | An exported package of a module.
    `static interface` | `ModuleElement.OpensDirective` | An opened package of a module.
    `static interface` | `ModuleElement.ProvidesDirective` | An implementation of a service provided by a module.
    `static interface` | `ModuleElement.RequiresDirective` | A dependency of a module.
    `static interface` | `ModuleElement.UsesDirective` | A reference to a service used by a module.

  - ### Method Summary

    Modifier and Type | Method | Description
    --- | --- | ---
    `List<? extends ModuleElement.Directive>` | `getDirectives()` | Returns the directives contained in the declaration of this module.
    `List<? extends Element>` | `getEnclosedElements()` | Returns the packages within this module.
    `Element` | `getEnclosingElement()` | Returns `null` since a module is not enclosed by another element.
    `Name` | `getQualifiedName()` | Returns the fully qualified name of this module.
    `Name` | `getSimpleName()` | Returns the simple name of this module.
    `boolean` | `isOpen()` | Returns `true` if this is an open module and `false` otherwise.
    `boolean` | `isUnnamed()` | Returns `true` if this is an unnamed module and `false` otherwise.

    - ### Methods declared in interface javax.lang.model.AnnotatedConstruct

      `getAnnotationsByType`

    - ### Methods declared in interface javax.lang.model.element.Element

      `accept, asType, equals, getAnnotation, getAnnotationMirrors, getKind, getModifiers, hashCode`

- - ### Method Detail

    - #### getQualifiedName

          Name getQualifiedName()

      Returns the fully qualified name of this module. For an unnamed module, an empty name is returned.
      Specified by:
        `getQualifiedName` in interface `QualifiedNameable`
      API Note:
        If the module name consists of one identifier, then this method returns that identifier, which is deemed to be module's fully qualified name despite not being in qualified form. If the module name consists of more than one identifier, then this method returns the entire name.
      Returns:
        the fully qualified name of this module, or an empty name if this is an unnamed module
      See The Java™ Language Specification:
        6.2 Names and Identifiers

    - #### getSimpleName

          Name getSimpleName()

      Returns the simple name of this module. For an unnamed module, an empty name is returned.
      Specified by:
        `getSimpleName` in interface `Element`
      API Note:
        If the module name consists of one identifier, then this method returns that identifier. If the module name consists of more than one identifier, then this method returns the rightmost such identifier, which is deemed to be the module's simple name.
      Returns:
        the simple name of this module or an empty name if this is an unnamed module
      See Also:
        `PackageElement.getSimpleName()`, `ExecutableElement.getSimpleName()`, `TypeElement.getSimpleName()`, `VariableElement.getSimpleName()`, `getSimpleName()`
      See The Java™ Language Specification:
        6.2 Names and Identifiers

    - #### getEnclosedElements

          List<? extends Element> getEnclosedElements()

      Returns the packages within this module.
      Specified by:
        `getEnclosedElements` in interface `Element`
      Returns:
        the packages within this module
      See Also:
        `TypeElement.getEnclosedElements()`, `PackageElement.getEnclosedElements()`, `getEnclosedElements()`, `Elements.getAllMembers(javax.lang.model.element.TypeElement)`

    - #### isOpen

          boolean isOpen()

      Returns `true` if this is an open module and `false` otherwise.
      Returns:
        `true` if this is an open module and `false` otherwise

    - #### isUnnamed

          boolean isUnnamed()

      Returns `true` if this is an unnamed module and `false` otherwise.
      Returns:
        `true` if this is an unnamed module and `false` otherwise
      See The Java™ Language Specification:
        7.7.5 Unnamed Modules

    - #### getEnclosingElement

          Element getEnclosingElement()

      Returns `null` since a module is not enclosed by another element.
      Specified by:
        `getEnclosingElement` in interface `Element`
      Returns:
        `null`
      See Also:
        `Elements.getPackageOf(javax.lang.model.element.Element)`

    - #### getDirectives

          List<? extends ModuleElement.Directive> getDirectives()

      Returns the directives contained in the declaration of this module.
      Returns:
        the directives in the declaration of this module