RecordComponent (Java SE 14 & JDK 14)
Description: declaration: module: java.base, package: java.lang.reflect, class: RecordComponent
Keywords: java.lang.reflect.RecordComponent class

Module java.base
Package java.lang.reflect

# Class RecordComponent

java.lang.Object
java.lang.reflect.RecordComponent

All Implemented Interfaces:
  `AnnotatedElement`

    public final class RecordComponent
    extends Object
    implements AnnotatedElement

This class is associated with records, a preview feature of the Java language. Preview features may be removed in a future release, or upgraded to permanent features of the Java language.
A `RecordComponent` provides information about, and dynamic access to, a component of a record class.

See Java Language Specification:
  8.10 Record Types
Since:
  14
See Also:
  `Class.getRecordComponents()`, `Record`

- ## Method Summary

  Modifier and Type | Method | Description
  --- | --- | ---
  `Method` | `getAccessor()` | Returns a `Method` that represents the accessor for this record component.
  `AnnotatedType` | `getAnnotatedType()` | Returns an `AnnotatedType` object that represents the use of a type to specify the declared type of this record component.
  `<T extends Annotation> T` | `getAnnotation​(Class<T> annotationClass)` | Returns this element's annotation for the specified type if such an annotation is present, else null.
  `Class<?>` | `getDeclaringRecord()` | Returns the record class which declares this record component.
  `String` | `getGenericSignature()` | Returns a `String` that describes the generic type signature for this record component.
  `Type` | `getGenericType()` | Returns a `Type` object that represents the declared type for this record component.
  `String` | `getName()` | Returns the name of this record component.
  `Class<?>` | `getType()` | Returns a `Class` that identifies the declared type for this record component.
  `String` | `toString()` | Returns a string describing this record component.

  ### Methods declared in class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

  ### Methods declared in interface java.lang.reflect.AnnotatedElement

  `getAnnotations, getAnnotationsByType, getDeclaredAnnotation, getDeclaredAnnotations, getDeclaredAnnotationsByType, isAnnotationPresent`

- ## Method Details

  - ### getName

    public String getName()
    Returns the name of this record component.
    Returns:
      the name of this record component

  - ### getType

    public Class<?> getType()
    Returns a `Class` that identifies the declared type for this record component.
    Returns:
      a `Class` identifying the declared type of the component represented by this record component

  - ### getGenericSignature

    public String getGenericSignature()
    Returns a `String` that describes the generic type signature for this record component.
    Returns:
      a `String` that describes the generic type signature for this record component
    See Java Virtual Machine Specification:
      4.7.9.1 Signatures

  - ### getGenericType

    public Type getGenericType()
    Returns a `Type` object that represents the declared type for this record component.

    If the declared type of the record component is a parameterized type, the `Type` object returned reflects the actual type arguments used in the source code.

    If the type of the underlying record component is a type variable or a parameterized type, it is created. Otherwise, it is resolved.

    Returns:
      a `Type` object that represents the declared type for this record component
    Throws:
      `GenericSignatureFormatError` - if the generic record component signature does not conform to the format specified in The Java™ Virtual Machine Specification
      `TypeNotPresentException` - if the generic type signature of the underlying record component refers to a non-existent type declaration
      `MalformedParameterizedTypeException` - if the generic signature of the underlying record component refers to a parameterized type that cannot be instantiated for any reason

  - ### getAnnotatedType

    public AnnotatedType getAnnotatedType()
    Returns an `AnnotatedType` object that represents the use of a type to specify the declared type of this record component.
    Returns:
      an object representing the declared type of this record component

  - ### getAccessor

    public Method getAccessor()
    Returns a `Method` that represents the accessor for this record component.
    Returns:
      a `Method` that represents the accessor for this record component

  - ### getAnnotation

    public <T extends Annotation> T getAnnotation​(Class<T> annotationClass)
    Description copied from interface: `AnnotatedElement`
    Returns this element's annotation for the specified type if such an annotation is present, else null.
    Specified by:
      `getAnnotation` in interface `AnnotatedElement`
    Type Parameters:
      `T` - the type of the annotation to query for and return if present
    Parameters:
      `annotationClass` - the Class object corresponding to the annotation type
    Returns:
      this element's annotation for the specified annotation type if present on this element, else null
    Throws:
      `NullPointerException` - if the given annotation class is null

  - ### toString

    public String toString()
    Returns a string describing this record component. The format is the record component type, followed by a space, followed by the name of the record component. For example:

            String name
            int age

    Overrides:
      `toString` in class `Object`
    Returns:
      a string describing this record component

  - ### getDeclaringRecord

    public Class<?> getDeclaringRecord()
    Returns the record class which declares this record component.
    Returns:
      The record class declaring this record component.