# Interface RecordComponentInfo

All Superinterfaces:
  `AttributedElement, ClassFileElement`

public sealed interface RecordComponentInfo extends AttributedElement
Models a single record component in the `RecordAttribute`.

`SignatureAttribute`, `RuntimeVisibleAnnotationsAttribute`, `RuntimeInvisibleAnnotationsAttribute`, `RuntimeVisibleTypeAnnotationsAttribute`, and `RuntimeInvisibleTypeAnnotationsAttribute` are the only predefined attributes that may exist on record components.

See Java Virtual Machine Specification:
  4.7.30 The `Record` Attribute
Since:
  24
See Also:
  - `RecordAttribute.components()`
  - `RecordComponent`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Utf8Entry`
  `descriptor()`
  Returns the field descriptor string of this component.
  `default ClassDesc`
  `descriptorSymbol()`
  Returns the symbolic field descriptor of this component.
  `Utf8Entry`
  `name()`
  Returns the name of this component.
  `static RecordComponentInfo`
  `of(Utf8Entry name, Utf8Entry descriptor, Attribute<?>... attributes)`
  Returns a record component description.
  `static RecordComponentInfo`
  `of(Utf8Entry name, Utf8Entry descriptor, List<Attribute<?>> attributes)`
  Returns a record component description.
  `static RecordComponentInfo`
  `of(String name, ClassDesc descriptor, Attribute<?>... attributes)`
  Returns a record component description.
  `static RecordComponentInfo`
  `of(String name, ClassDesc descriptor, List<Attribute<?>> attributes)`
  Returns a record component description.

  ### Methods declared in interface AttributedElement

  `attributes, findAttribute, findAttributes`
  Modifier and Type
  Method
  Description
  `List<Attribute<?>>`
  `attributes()`
  Returns the attributes of this structure.
  `default <T extends Attribute<T>>
  Optional<T>`
  `findAttribute(AttributeMapper<T> attr)`
  Finds an attribute by name.
  `default <T extends Attribute<T>>
  List<T>`
  `findAttributes(AttributeMapper<T> attr)`
  Finds attributes by name.

- ## Method Details

  - ### name

    Utf8Entry name()
    Returns the name of this component.
    Returns:
      the name of this component
    See Also:
      - `RecordComponent.getName()`

  - ### descriptor

    Utf8Entry descriptor()
    Returns the field descriptor string of this component.
    API Note:
      A record component may have a generic type; this information is stored in the `Signature` attribute in this component.
    Returns:
      the field descriptor string of this component
    See Also:
      - `RecordComponent.getType()`

  - ### descriptorSymbol

    default ClassDesc descriptorSymbol()
    Returns the symbolic field descriptor of this component.
    API Note:
      A record component may have a generic type; this information is stored in the `Signature` attribute in this component.
    Returns:
      the symbolic field descriptor of this component
    See Also:
      - `RecordComponent.getType()`

  - ### of

    static RecordComponentInfo of(Utf8Entry name, Utf8Entry descriptor, List<Attribute<?>> attributes)
    Returns a record component description.
    Parameters:
      `name` - the component name
      `descriptor` - the component field descriptor string
      `attributes` - the component attributes
    Returns:
      a record component description
    Throws:
      `IllegalArgumentException` - if the number of attributes exceeds the limit of `u2`

  - ### of

    static RecordComponentInfo of(Utf8Entry name, Utf8Entry descriptor, Attribute<?>... attributes)
    Returns a record component description.
    Parameters:
      `name` - the component name
      `descriptor` - the component field descriptor sting
      `attributes` - the component attributes
    Returns:
      a record component description
    Throws:
      `IllegalArgumentException` - if the number of attributes exceeds the limit of `u2`

  - ### of

    static RecordComponentInfo of(String name, ClassDesc descriptor, List<Attribute<?>> attributes)
    Returns a record component description.
    Parameters:
      `name` - the component name
      `descriptor` - the component symbolic field descriptor
      `attributes` - the component attributes
    Returns:
      a record component description
    Throws:
      `IllegalArgumentException` - if the number of attributes exceeds the limit of `u2`

  - ### of

    static RecordComponentInfo of(String name, ClassDesc descriptor, Attribute<?>... attributes)
    Returns a record component description.
    Parameters:
      `name` - the component name
      `descriptor` - the component symbolic field descriptor
      `attributes` - the component attributes
    Returns:
      a record component description
    Throws:
      `IllegalArgumentException` - if the number of attributes exceeds the limit of `u2`