ModuleMainClassAttribute (Java SE 23 & JDK 23)
Description: declaration: module: java.base, package: java.lang.classfile.attribute, interface: ModuleMainClassAttribute
Keywords: java.lang.classfile.attribute.ModuleMainClassAttribute interface

# Interface ModuleMainClassAttribute

All Superinterfaces:
  `AttributePREVIEW<ModuleMainClassAttributePREVIEW>`, `ClassElementPREVIEW`, `ClassFileElementPREVIEW`, `WritableElementPREVIEW<ModuleMainClassAttributePREVIEW>`

public sealed interface ModuleMainClassAttribute extends AttributePREVIEW<ModuleMainClassAttributePREVIEW>, ClassElementPREVIEW
`ModuleMainClassAttribute` is a preview API of the Java platform.
Programs can only use `ModuleMainClassAttribute` when preview features are enabled.
Preview features may be removed in a future release, or upgraded to permanent features of the Java platform.
Models the `ModuleMainClass` attribute 4.7.27, which can appear on classes that represent module descriptors. Delivered as a `ClassElement`PREVIEW when traversing the elements of a `ClassModel`PREVIEW.

The attribute does not permit multiple instances in a given location. Subsequent occurrence of the attribute takes precedence during the attributed element build or transformation.

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

Since:
  22

- ## Method Summary

  Modifier and Type
  Method
  Description
  `ClassEntryPREVIEW`
  `mainClass()`
  Returns main class for this module.
  `static ModuleMainClassAttributePREVIEW`
  `of(ClassEntryPREVIEW mainClass)`
  Returns a `ModuleMainClass` attribute.
  `static ModuleMainClassAttributePREVIEW`
  `of(ClassDesc mainClass)`
  Returns a `ModuleMainClass` attribute.

  ### Methods declared in interface java.lang.classfile.AttributePREVIEW

  `attributeMapper, attributeName`

  ### Methods declared in interface java.lang.classfile.WritableElementPREVIEW

  `writeTo`

- ## Method Details

  - ### mainClass

    ClassEntryPREVIEW mainClass()
    Returns main class for this module.
    Returns:
      main class for this module

  - ### of

    static ModuleMainClassAttributePREVIEW of(ClassEntryPREVIEW mainClass)
    Returns a `ModuleMainClass` attribute.
    Parameters:
      `mainClass` - the main class
    Returns:
      a `ModuleMainClass` attribute

  - ### of

    static ModuleMainClassAttributePREVIEW of(ClassDesc mainClass)
    Returns a `ModuleMainClass` attribute.
    Parameters:
      `mainClass` - the main class
    Returns:
      a `ModuleMainClass` attribute
    Throws:
      `IllegalArgumentException` - if `mainClass` represents a primitive type