Package org.springframework.core.type

# Interface AnnotationMetadata

All Superinterfaces:
  `AnnotatedTypeMetadata`, `ClassMetadata`

All Known Implementing Classes:
  `StandardAnnotationMetadata`

public interface AnnotationMetadata extends ClassMetadata, AnnotatedTypeMetadata
Interface that defines abstract access to the annotations of a specific class, in a form that does not require that class to be loaded yet.

Since:
  2.5
Author:
  Juergen Hoeller, Mark Fisher, Phillip Webb, Sam Brannen
See Also:
  - `StandardAnnotationMetadata`
  - `MetadataReader.getAnnotationMetadata()`
  - `AnnotatedTypeMetadata`

## Method Summary

Modifier and Type
Method
Description
`Set<MethodMetadata>`
`getAnnotatedMethods(String annotationName)`
Retrieve the method metadata for all methods that are annotated (or meta-annotated) with the given annotation type.
`default Set<String>`
`getAnnotationTypes()`
Get the fully-qualified class names of all annotation types that are directly present on the underlying class.
`Set<MethodMetadata>`
`getDeclaredMethods()`
Retrieve the method metadata for all user-declared methods on the underlying class, preserving declaration order as far as possible.
`default Set<String>`
`getMetaAnnotationTypes(String annotationName)`
Get the fully-qualified class names of all meta-annotation types that are present on the given annotation type on the underlying class.
`default boolean`
`hasAnnotatedMethods(String annotationName)`
Determine whether the underlying class has any methods that are annotated (or meta-annotated) with the given annotation type.
`default boolean`
`hasAnnotation(String annotationName)`
Determine whether an annotation of the given type is directly present on the underlying class.
`default boolean`
`hasMetaAnnotation(String metaAnnotationName)`
Determine whether the underlying class has an annotation that is itself annotated with the meta-annotation of the given type.
`static AnnotationMetadata`
`introspect(Class<?> type)`
Factory method to create a new `AnnotationMetadata` instance for the given class using standard reflection.

### Methods inherited from interface org.springframework.core.type.AnnotatedTypeMetadata

`getAllAnnotationAttributes, getAllAnnotationAttributes, getAnnotationAttributes, getAnnotationAttributes, getAnnotations, getMergedRepeatableAnnotationAttributes, getMergedRepeatableAnnotationAttributes, getMergedRepeatableAnnotationAttributes, isAnnotated`

### Methods inherited from interface org.springframework.core.type.ClassMetadata

`getClassName, getEnclosingClassName, getInterfaceNames, getMemberClassNames, getSuperClassName, hasEnclosingClass, hasSuperClass, isAbstract, isAnnotation, isConcrete, isFinal, isIndependent, isInterface`

## Method Details

### getAnnotationTypes

default Set<String> getAnnotationTypes()
Get the fully-qualified class names of all annotation types that are directly present on the underlying class.

Returns:
  the annotation type names

### getMetaAnnotationTypes

default Set<String> getMetaAnnotationTypes(String annotationName)
Get the fully-qualified class names of all meta-annotation types that are present on the given annotation type on the underlying class.

Parameters:
  `annotationName` - the fully-qualified class name of the annotation type to look for meta-annotations on
Returns:
  the meta-annotation type names, or an empty set if none found

### hasAnnotation

default boolean hasAnnotation(String annotationName)
Determine whether an annotation of the given type is directly present on the underlying class.

Parameters:
  `annotationName` - the fully-qualified class name of the annotation type to look for
Returns:
  `true` if a matching annotation is directly present

### hasMetaAnnotation

default boolean hasMetaAnnotation(String metaAnnotationName)
Determine whether the underlying class has an annotation that is itself annotated with the meta-annotation of the given type.

Parameters:
  `metaAnnotationName` - the fully-qualified class name of the meta-annotation type to look for
Returns:
  `true` if a matching meta-annotation is present

### hasAnnotatedMethods

default boolean hasAnnotatedMethods(String annotationName)
Determine whether the underlying class has any methods that are annotated (or meta-annotated) with the given annotation type.

Parameters:
  `annotationName` - the fully-qualified class name of the annotation type to look for

### getAnnotatedMethods

Set<MethodMetadata> getAnnotatedMethods(String annotationName)
Retrieve the method metadata for all methods that are annotated (or meta-annotated) with the given annotation type.

For any returned method, `AnnotatedTypeMetadata.isAnnotated(java.lang.String)` will return `true` for the given annotation type.

Parameters:
  `annotationName` - the fully-qualified class name of the annotation type to look for
Returns:
  a set of `MethodMetadata` for methods that have a matching annotation. The return value will be an empty set if no methods match the annotation type.

### getDeclaredMethods

Set<MethodMetadata> getDeclaredMethods()
Retrieve the method metadata for all user-declared methods on the underlying class, preserving declaration order as far as possible.

Returns:
  a set of `MethodMetadata`
Since:
  6.0

### introspect

static AnnotationMetadata introspect(Class<?> type)
Factory method to create a new `AnnotationMetadata` instance for the given class using standard reflection.

Parameters:
  `type` - the class to introspect
Returns:
  a new `AnnotationMetadata` instance
Since:
  5.2