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

# Interface RecordAttribute

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

public sealed interface RecordAttribute extends Attribute<RecordAttribute>, ClassElement
Models the `Record` attribute (JVMS 4.7.30), which indicates that this class is a record class and the record components.

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 16, major version 60.

See Java Virtual Machine Specification:
  4.7.30 The `Record` Attribute
Since:
  24
See Also:
  - `Attributes.record()`
  - `Class.isRecord()`
  - `Class.getRecordComponents()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `List<RecordComponentInfo>`
  `components()`
  Returns the components of this record class.
  `static RecordAttribute`
  `of(RecordComponentInfo... components)`
  Returns a `Record` attribute.
  `static RecordAttribute`
  `of(List<RecordComponentInfo> components)`
  Returns a `Record` attribute.

  ### Methods declared in interface Attribute

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

- ## Method Details

  - ### components

    List<RecordComponentInfo> components()
    Returns the components of this record class.
    Returns:
      the components of this record class
    See Also:
      - `Class.getRecordComponents()`

  - ### of

    static RecordAttribute of(List<RecordComponentInfo> components)
    Returns a `Record` attribute.
    Parameters:
      `components` - the record components
    Returns:
      a `Record` attribute
    Throws:
      `IllegalArgumentException` - if the number of record components exceeds the limit of `u2`

  - ### of

    static RecordAttribute of(RecordComponentInfo... components)
    Returns a `Record` attribute.
    Parameters:
      `components` - the record components
    Returns:
      a `Record` attribute
    Throws:
      `IllegalArgumentException` - if the number of record components exceeds the limit of `u2`