# Interface ModuleMainClassAttribute

All Superinterfaces:
  `Attribute<ModuleMainClassAttribute>, ClassElement, ClassFileElement`

public sealed interface ModuleMainClassAttribute extends Attribute<ModuleMainClassAttribute>, ClassElement
Models the `ModuleMainClass` attribute (JVMS 4.7.27), which appears on classes that represent module descriptors to indicate the main class of the module.

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.27 The `ModuleMainClass` Attribute
Since:
  24
See Also:
  - `Attributes.moduleMainClass()`
  - `ModuleDescriptor.mainClass()`

## Method Summary

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

### Methods declared in interface Attribute

`attributeMapper, attributeName`
Modifier and Type
Method
Description
`AttributeMapper<ModuleMainClassAttribute>`
`attributeMapper()`
Returns the `AttributeMapper` associated with this attribute.
`Utf8Entry`
`attributeName()`
Returns the name of the attribute.

## Method Details

### mainClass

ClassEntry mainClass()
Returns main class for this module.

Returns:
  main class for this module

### of

static ModuleMainClassAttribute of(ClassEntry mainClass)
Returns a `ModuleMainClass` attribute.

Parameters:
  `mainClass` - the main class
Returns:
  a `ModuleMainClass` attribute

### of

static ModuleMainClassAttribute of(ClassDesc mainClass)
Returns a `ModuleMainClass` attribute.

Parameters:
  `mainClass` - the main class
Returns:
  a `ModuleMainClass` attribute
Throws:
  `IllegalArgumentException` - if `mainClass` represents a primitive type