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

# Interface PermittedSubclassesAttribute

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

public sealed interface PermittedSubclassesAttribute extends AttributePREVIEW<PermittedSubclassesAttributePREVIEW>, ClassElementPREVIEW
`PermittedSubclassesAttribute` is a preview API of the Java platform.
Programs can only use `PermittedSubclassesAttribute` 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 `PermittedSubclasses` attribute 4.7.31, which can appear on classes to indicate which classes may extend this class. 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 17.

Since:
  22

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static PermittedSubclassesAttributePREVIEW`
  `of(ClassEntryPREVIEW... permittedSubclasses)`
  Returns a `PermittedSubclasses` attribute.
  `static PermittedSubclassesAttributePREVIEW`
  `of(List<ClassEntryPREVIEW> permittedSubclasses)`
  Returns a `PermittedSubclasses` attribute.
  `static PermittedSubclassesAttributePREVIEW`
  `ofSymbols(ClassDesc... permittedSubclasses)`
  Returns a `PermittedSubclasses` attribute.
  `static PermittedSubclassesAttributePREVIEW`
  `ofSymbols(List<ClassDesc> permittedSubclasses)`
  Returns a `PermittedSubclasses` attribute.
  `List<ClassEntryPREVIEW>`
  `permittedSubclasses()`
  Returns the list of permitted subclasses.

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

  `attributeMapper, attributeName`

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

  `writeTo`

- ## Method Details

  - ### permittedSubclasses

    List<ClassEntryPREVIEW> permittedSubclasses()
    Returns the list of permitted subclasses.
    Returns:
      the list of permitted subclasses

  - ### of

    static PermittedSubclassesAttributePREVIEW of(List<ClassEntryPREVIEW> permittedSubclasses)
    Returns a `PermittedSubclasses` attribute.
    Parameters:
      `permittedSubclasses` - the permitted subclasses
    Returns:
      a `PermittedSubclasses` attribute

  - ### of

    static PermittedSubclassesAttributePREVIEW of(ClassEntryPREVIEW... permittedSubclasses)
    Returns a `PermittedSubclasses` attribute.
    Parameters:
      `permittedSubclasses` - the permitted subclasses
    Returns:
      a `PermittedSubclasses` attribute

  - ### ofSymbols

    static PermittedSubclassesAttributePREVIEW ofSymbols(List<ClassDesc> permittedSubclasses)
    Returns a `PermittedSubclasses` attribute.
    Parameters:
      `permittedSubclasses` - the permitted subclasses
    Returns:
      a `PermittedSubclasses` attribute

  - ### ofSymbols

    static PermittedSubclassesAttributePREVIEW ofSymbols(ClassDesc... permittedSubclasses)
    Returns a `PermittedSubclasses` attribute.
    Parameters:
      `permittedSubclasses` - the permitted subclasses
    Returns:
      a `PermittedSubclasses` attribute