AnnotatedType (Java SE 26 & JDK 26)
Description: declaration: module: java.base, package: java.lang.reflect, interface: AnnotatedType
Keywords: java.lang.reflect.AnnotatedType interface

# Interface AnnotatedType

All Superinterfaces:
  `AnnotatedElement`

All Known Subinterfaces:
  `AnnotatedArrayType, AnnotatedParameterizedType, AnnotatedTypeVariable, AnnotatedWildcardType`

public interface AnnotatedType extends AnnotatedElement
`AnnotatedType` represents the potentially annotated use of a type in the program currently running in this VM. The use may be of any type in the Java programming language, including an array type, a parameterized type, a type variable, or a wildcard type. Note that any annotations returned by methods on this interface are type annotations (JLS 9.7.4) as the entity being potentially annotated is a type.

See Java Language Specification:
  4.1 The Kinds of Types and Values
  4.2 Primitive Types and Values
  4.3 Reference Types and Values
  4.4 Type Variables
  4.5 Parameterized Types
  4.8 Raw Types
  4.9 Intersection Types
  10.1 Array Types
Since:
  1.8

- ## Method Summary

  Modifier and Type
  Method
  Description
  `default AnnotatedType`
  `getAnnotatedOwnerType()`
  Returns the potentially annotated type that this type is a member of, if this type represents a nested type.
  `<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.
  `Annotation[]`
  `getAnnotations()`
  Returns annotations that are present on this element.
  `Annotation[]`
  `getDeclaredAnnotations()`
  Returns annotations that are directly present on this element.
  `Type`
  `getType()`
  Returns the underlying type that this annotated type represents.

  ### Methods declared in interface AnnotatedElement

  `getAnnotationsByType, getDeclaredAnnotation, getDeclaredAnnotationsByType, isAnnotationPresent`
  Modifier and Type
  Method
  Description
  `default <T extends Annotation>
  T[]`
  `getAnnotationsByType(Class<T> annotationClass)`
  Returns annotations that are associated with this element.
  `default <T extends Annotation>
  T`
  `getDeclaredAnnotation(Class<T> annotationClass)`
  Returns this element's annotation for the specified type if such an annotation is directly present, else null.
  `default <T extends Annotation>
  T[]`
  `getDeclaredAnnotationsByType(Class<T> annotationClass)`
  Returns this element's annotation(s) for the specified type if such annotations are either directly present or indirectly present.
  `default boolean`
  `isAnnotationPresent(Class<? extends Annotation> annotationClass)`
  Returns true if an annotation for the specified type is present on this element, else false.

- ## Method Details

  - ### getAnnotatedOwnerType

    default AnnotatedType getAnnotatedOwnerType()
    Returns the potentially annotated type that this type is a member of, if this type represents a nested type. For example, if this type is `@TA O<T>.I<S>`, return a representation of `@TA O<T>`.

    Returns `null` if this `AnnotatedType` represents a top-level class or interface, or a local or anonymous class, or a primitive type, or void.

    Returns `null` if this `AnnotatedType` is an instance of `AnnotatedArrayType`, `AnnotatedTypeVariable`, or `AnnotatedWildcardType`.

    Implementation Requirements:
      This default implementation returns `null` and performs no other action.
    Returns:
      an `AnnotatedType` object representing the potentially annotated type that this type is a member of, or `null`
    Throws:
      `TypeNotPresentException` - if the owner type refers to a non-existent class or interface declaration
      `MalformedParameterizedTypeException` - if the owner type refers to a parameterized type that cannot be instantiated for any reason
    Since:
      9

  - ### getType

    Type getType()
    Returns the underlying type that this annotated type represents.
    Returns:
      the type this annotated type represents

  - ### getAnnotation

    <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.

    Note that any annotation returned by this method is a type annotation.

    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

  - ### getAnnotations

    Annotation[] getAnnotations()
    Returns annotations that are present on this element. If there are no annotations present on this element, the return value is an array of length 0. The caller of this method is free to modify the returned array; it will have no effect on the arrays returned to other callers.

    Note that any annotations returned by this method are type annotations.

    Specified by:
      `getAnnotations` in interface `AnnotatedElement`
    Returns:
      annotations present on this element

  - ### getDeclaredAnnotations

    Annotation[] getDeclaredAnnotations()
    Returns annotations that are directly present on this element. This method ignores inherited annotations. If there are no annotations directly present on this element, the return value is an array of length 0. The caller of this method is free to modify the returned array; it will have no effect on the arrays returned to other callers.

    Note that any annotations returned by this method are type annotations.

    Specified by:
      `getDeclaredAnnotations` in interface `AnnotatedElement`
    Returns:
      annotations directly present on this element