TypeAnnotation.TypePathComponent (Java SE 25 & JDK 25)
Description: declaration: module: java.base, package: java.lang.classfile, interface: TypeAnnotation, interface: TypePathComponent
Keywords: java.lang.classfile.TypeAnnotation.TypePathComponent interface

# Interface TypeAnnotation.TypePathComponent

Enclosing interface:
  `TypeAnnotation`

public static sealed interface TypeAnnotation.TypePathComponent
JVMS: Type_path structure identifies which part of the type is annotated, as defined in JVMS 4.7.20.2

Since:
  24
See Also:
  - `TypeAnnotation.targetPath()`

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Interface
  Description
  `static enum`
  `TypeAnnotation.TypePathComponent.Kind`
  Type path kind, as defined in JVMS 4.7.20.2

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final TypeAnnotation.TypePathComponent`
  `ARRAY`
  static instance for annotation is deeper in an array type
  `static final TypeAnnotation.TypePathComponent`
  `INNER_TYPE`
  static instance for annotation is deeper in a nested type
  `static final TypeAnnotation.TypePathComponent`
  `WILDCARD`
  static instance for annotation is on the bound of a wildcard type argument of a parameterized type

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static TypeAnnotation.TypePathComponent`
  `of(TypeAnnotation.TypePathComponent.Kind typePathKind, int typeArgumentIndex)`
  Returns type path component of an annotation.
  `int`
  `typeArgumentIndex()`
  JVMS: type_argument_index If the value of the type_path_kind item is 0, 1, or 2, then the value of the type_argument_index item is 0.
  `TypeAnnotation.TypePathComponent.Kind`
  `typePathKind()`
  The type path kind items from JVMS Table 4.7.20.2-A.

- ## Field Details

  - ### ARRAY

    static final TypeAnnotation.TypePathComponent ARRAY
    static instance for annotation is deeper in an array type

  - ### INNER_TYPE

    static final TypeAnnotation.TypePathComponent INNER_TYPE
    static instance for annotation is deeper in a nested type

  - ### WILDCARD

    static final TypeAnnotation.TypePathComponent WILDCARD
    static instance for annotation is on the bound of a wildcard type argument of a parameterized type

- ## Method Details

  - ### typePathKind

    TypeAnnotation.TypePathComponent.Kind typePathKind()
    The type path kind items from JVMS Table 4.7.20.2-A.
    Returns:
      the kind of path element

  - ### typeArgumentIndex

    int typeArgumentIndex()
    JVMS: type_argument_index If the value of the type_path_kind item is 0, 1, or 2, then the value of the type_argument_index item is 0. If the value of the type_path_kind item is 3, then the value of the type_argument_index item specifies which type argument of a parameterized type is annotated, where 0 indicates the first type argument of a parameterized type.
    Returns:
      the index within the type component

  - ### of

    static TypeAnnotation.TypePathComponent of(TypeAnnotation.TypePathComponent.Kind typePathKind, int typeArgumentIndex)
    Returns type path component of an annotation.
    Parameters:
      `typePathKind` - the kind of path element
      `typeArgumentIndex` - the type argument index
    Returns:
      type path component of an annotation