org.springframework.core.type

## Interface AnnotationMetadata

All Superinterfaces:
  ClassMetadata

All Known Implementing Classes:
  StandardAnnotationMetadata

    public interface AnnotationMetadata
    extends ClassMetadata

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
See Also:
  `StandardAnnotationMetadata`, `MetadataReader.getAnnotationMetadata()`

### Method Summary

Methods
`Set<MethodMetadata>` `getAnnotatedMethods(String annotationType)` Retrieve the method metadata for all methods that are annotated (or meta-annotated) with the given annotation type.
`Map<String,Object>` `getAnnotationAttributes(String annotationType)` Retrieve the attributes of the annotation of the given type, if any (i.e.
`Map<String,Object>` `getAnnotationAttributes(String annotationType, boolean classValuesAsString)` Retrieve the attributes of the annotation of the given type, if any (i.e.
`Set<String>` `getAnnotationTypes()` Return the names of all annotation types defined on the underlying class.
`Set<String>` `getMetaAnnotationTypes(String annotationType)` Return the names of all meta-annotation types defined on the given annotation type of the underlying class.
`boolean` `hasAnnotatedMethods(String annotationType)` Determine whether the underlying class has any methods that are annotated (or meta-annotated) with the given annotation type.
`boolean` `hasAnnotation(String annotationType)` Determine whether the underlying class has an annotation of the given type defined.
`boolean` `hasMetaAnnotation(String metaAnnotationType)` Determine whether the underlying class has an annotation that is itself annotated with the meta-annotation of the given type.
`boolean` `isAnnotated(String annotationType)` Determine whether the underlying class has an annotation or meta-annotation of the given type defined.

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

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

### Method Detail

#### getAnnotationTypes

    Set<String> getAnnotationTypes()

Return the names of all annotation types defined on the underlying class.

Returns:
  the annotation type names

#### getMetaAnnotationTypes

    Set<String> getMetaAnnotationTypes(String annotationType)

Return the names of all meta-annotation types defined on the given annotation type of the underlying class.

Parameters:
  `annotationType` - the meta-annotation type to look for
Returns:
  the meta-annotation type names

#### hasAnnotation

    boolean hasAnnotation(String annotationType)

Determine whether the underlying class has an annotation of the given type defined.

Parameters:
  `annotationType` - the annotation type to look for
Returns:
  whether a matching annotation is defined

#### hasMetaAnnotation

    boolean hasMetaAnnotation(String metaAnnotationType)

Determine whether the underlying class has an annotation that is itself annotated with the meta-annotation of the given type.

Parameters:
  `metaAnnotationType` - the meta-annotation type to look for
Returns:
  whether a matching meta-annotation is defined

#### isAnnotated

    boolean isAnnotated(String annotationType)

Determine whether the underlying class has an annotation or meta-annotation of the given type defined.

This is equivalent to a "hasAnnotation || hasMetaAnnotation" check. If this method returns `true`, then `getAnnotationAttributes(java.lang.String)` will return a non-null Map.

Parameters:
  `annotationType` - the annotation type to look for
Returns:
  whether a matching annotation is defined

#### getAnnotationAttributes

    Map<String,Object> getAnnotationAttributes(String annotationType)

Retrieve the attributes of the annotation of the given type, if any (i.e. if defined on the underlying class, as direct annotation or as meta-annotation).

Parameters:
  `annotationType` - the annotation type to look for
Returns:
  a Map of attributes, with the attribute name as key (e.g. "value") and the defined attribute value as Map value. This return value will be `null` if no matching annotation is defined.

#### getAnnotationAttributes

    Map<String,Object> getAnnotationAttributes(String annotationType,
                                             boolean classValuesAsString)

Retrieve the attributes of the annotation of the given type, if any (i.e. if defined on the underlying class, as direct annotation or as meta-annotation).

Parameters:
  `annotationType` - the annotation type to look for
  `classValuesAsString` - whether to convert class references to String class names for exposure as values in the returned Map, instead of Class references which might potentially have to be loaded first
Returns:
  a Map of attributes, with the attribute name as key (e.g. "value") and the defined attribute value as Map value. This return value will be `null` if no matching annotation is defined.

#### hasAnnotatedMethods

    boolean hasAnnotatedMethods(String annotationType)

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

#### getAnnotatedMethods

    Set<MethodMetadata> getAnnotatedMethods(String annotationType)

Retrieve the method metadata for all methods that are annotated (or meta-annotated) with the given annotation type.

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

Parameters:
  `annotationType` - 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.