W3cubDocs

/OpenJDK 25

Interface ModuleAttribute

All Superinterfaces:
Attribute<ModuleAttribute>, ClassElement, ClassFileElement
public sealed interface ModuleAttribute extends Attribute<ModuleAttribute>, ClassElement
Models the Module attribute (JVMS 4.7.25), which always appears on classes that represent module descriptors.

This attribute only appears on classes, and does not permit multiple instances in a class. It has a data dependency on the constant pool.

The attribute was introduced in the Java SE Platform version 9, major version 53.

See Java Virtual Machine Specification:
4.7.25 The Module Attribute
Since:
24
See Also:

Nested Class Summary

Modifier and Type Interface Description
static interface  ModuleAttribute.ModuleAttributeBuilder
A builder for Module attributes.

Method Summary

Modifier and Type Method Description
List<ModuleExportInfo> exports()
Returns the packages exported by this module.
default boolean has(AccessFlag flag)
Tests presence of module flag.
default Set<AccessFlag> moduleFlags()
Returns the module flags of the module, as a set of enum constants.
int moduleFlagsMask()
Returns the module flags of the module, as a bit mask.
ModuleEntry moduleName()
Returns the name of the module.
Optional<Utf8Entry> moduleVersion()
Returns the version of the module, if present.
static ModuleAttribute of(ModuleEntry moduleName, int moduleFlags, Utf8Entry moduleVersion, Collection<ModuleRequireInfo> requires, Collection<ModuleExportInfo> exports, Collection<ModuleOpenInfo> opens, Collection<ClassEntry> uses, Collection<ModuleProvideInfo> provides)
Returns a Module attribute.
static ModuleAttribute of(ModuleEntry moduleName, Consumer<ModuleAttribute.ModuleAttributeBuilder> attrHandler)
Returns a Module attribute.
static ModuleAttribute of(ModuleDesc moduleName, Consumer<ModuleAttribute.ModuleAttributeBuilder> attrHandler)
Returns a Module attribute.
List<ModuleOpenInfo> opens()
Returns the packages opened by this module.
List<ModuleProvideInfo> provides()
Returns the service implementations provided by this module.
List<ModuleRequireInfo> requires()
Returns the modules required by this module.
List<ClassEntry> uses()
Returns the services used by this module.

Methods declared in interface Attribute

attributeMapper, attributeName

Method Details

moduleName

ModuleEntry moduleName()
Returns the name of the module.
Returns:
the name of the module
See Also:

moduleFlagsMask

int moduleFlagsMask()
Returns the module flags of the module, as a bit mask. It is in the range of unsigned short, [0, 0xFFFF].
Returns:
the module flags of the module, as a bit mask
See Also:

moduleFlags

default Set<AccessFlag> moduleFlags()
Returns the module flags of the module, as a set of enum constants.
Returns:
the module flags of the module, as a set of enum constants
Throws:
IllegalArgumentException - if the flags mask has any undefined bit set
See Also:

has

default boolean has(AccessFlag flag)
Tests presence of module flag.
Parameters:
flag - the module flag
Returns:
true if the flag is set
See Also:

moduleVersion

Optional<Utf8Entry> moduleVersion()
Returns the version of the module, if present.
Returns:
the version of the module, if present
See Also:

requires

List<ModuleRequireInfo> requires()
Returns the modules required by this module.
Returns:
the modules required by this module
See Also:

exports

List<ModuleExportInfo> exports()
Returns the packages exported by this module.
Returns:
the packages exported by this module
See Also:

opens

List<ModuleOpenInfo> opens()
Returns the packages opened by this module.
API Note:
Opening a package to another module allows that other module to gain the same full privilege access as members in this module. See MethodHandles.privateLookupIn(Class, MethodHandles.Lookup) for more details.
Returns:
the packages opened by this module
See Also:

uses

List<ClassEntry> uses()
Returns the services used by this module. Services may be discovered via ServiceLoader.
Returns:
the services used by this module
See Also:

provides

List<ModuleProvideInfo> provides()
Returns the service implementations provided by this module.
Returns:
the service implementations provided by this module
See Also:

of

static ModuleAttribute of(ModuleEntry moduleName, int moduleFlags, Utf8Entry moduleVersion, Collection<ModuleRequireInfo> requires, Collection<ModuleExportInfo> exports, Collection<ModuleOpenInfo> opens, Collection<ClassEntry> uses, Collection<ModuleProvideInfo> provides)
Returns a Module attribute.
Parameters:
moduleName - the module name
moduleFlags - the module flags
moduleVersion - the module version, may be null
requires - the required packages
exports - the exported packages
opens - the opened packages
uses - the consumed services
provides - the provided services
Returns:
a Module attribute

of

static ModuleAttribute of(ModuleDesc moduleName, Consumer<ModuleAttribute.ModuleAttributeBuilder> attrHandler)
Returns a Module attribute.
Parameters:
moduleName - the module name
attrHandler - a handler that receives a ModuleAttribute.ModuleAttributeBuilder
Returns:
a Module attribute

of

static ModuleAttribute of(ModuleEntry moduleName, Consumer<ModuleAttribute.ModuleAttributeBuilder> attrHandler)
Returns a Module attribute.
Parameters:
moduleName - the module name
attrHandler - a handler that receives a ModuleAttribute.ModuleAttributeBuilder
Returns:
a Module attribute

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/classfile/attribute/ModuleAttribute.html