public abstract class AnnotationUtils extends Object
As a general rule for runtime-retained annotations (e.g. for transaction control,
authorization or service exposure), always use the lookup methods on this class (e.g., findAnnotation(Method, Class), getAnnotation(Method, Class), and getAnnotations(Method)) instead of the plain annotation lookup methods in the JDK. You can
still explicitly choose between lookup on the given class level only (getAnnotation(Method, Class)) and lookup in the entire inheritance hierarchy of the given
method (findAnnotation(Method, Class)).
| Constructor and Description |
|---|
AnnotationUtils() |
| Modifier and Type | Method and Description |
|---|---|
static <A extends Annotation> |
findAnnotation(Class<?> clazz,
Class<A> annotationType)
Find a single
Annotation of annotationType from the supplied Class, traversing its interfaces and super classes if no annotation can be found on the
given class itself. |
static <A extends Annotation> |
findAnnotation(Method method,
Class<A> annotationType)
Get a single
Annotation of annotationType from the supplied Method, traversing its super methods if no annotation can be found on the given method
itself. |
static Class<?> |
findAnnotationDeclaringClass(Class<? extends Annotation> annotationType,
Class<?> clazz)
Find the first
Class in the inheritance hierarchy of the specified clazz
(including the specified clazz itself) which declares an annotation for the
specified annotationType, or null if not found. |
static <A extends Annotation> |
getAnnotation(Method method,
Class<A> annotationType)
|
static Map<String,Object> |
getAnnotationAttributes(Annotation annotation)
Retrieve the given annotation's attributes as a Map.
|
static Annotation[] |
getAnnotations(Method method)
Get all
Annotations from the supplied Method. |
static Object |
getDefaultValue(Annotation annotation)
Retrieve the default value of the
"value" attribute of a
single-element Annotation, given an annotation instance. |
static Object |
getDefaultValue(Annotation annotation,
String attributeName)
Retrieve the default value of a named Annotation attribute, given an annotation
instance.
|
static Object |
getDefaultValue(Class<? extends Annotation> annotationType)
Retrieve the default value of the
"value" attribute of a
single-element Annotation, given the annotation type. |
static Object |
getDefaultValue(Class<? extends Annotation> annotationType,
String attributeName)
Retrieve the default value of a named Annotation attribute, given the
annotation type. |
static Object |
getValue(Annotation annotation)
Retrieve the value of the
"value" attribute of a
single-element Annotation, given an annotation instance. |
static Object |
getValue(Annotation annotation,
String attributeName)
Retrieve the value of a named Annotation attribute, given an annotation instance.
|
static boolean |
isAnnotationDeclaredLocally(Class<? extends Annotation> annotationType,
Class<?> clazz)
Determine whether an annotation for the specified
annotationType is declared
locally on the supplied clazz. |
static boolean |
isAnnotationInherited(Class<? extends Annotation> annotationType,
Class<?> clazz)
Determine whether an annotation for the specified
annotationType is present on
the supplied clazz and is inherited
(i.e., not declared locally for the class). |
public static Annotation[] getAnnotations(Method method)
Annotations from the supplied Method. Correctly handles
bridge Methods generated by the compiler.
method - the method to look for annotations onBridgeMethodResolver.findBridgedMethod(Method)public static <A extends Annotation> A getAnnotation(Method method, Class<A> annotationType)
Annotation of annotationType from the supplied Method. Correctly handles bridge Methods generated by the compiler.
method - the method to look for annotations onannotationType - the annotation class to look forBridgeMethodResolver.findBridgedMethod(Method)public static <A extends Annotation> A findAnnotation(Method method, Class<A> annotationType)
Annotation of annotationType from the supplied Method, traversing its super methods if no annotation can be found on the given method
itself. Annotations on methods are not inherited by default, so we need to handle this explicitly.
method - the method to look for annotations onannotationType - the annotation class to look fornull if none foundpublic static <A extends Annotation> A findAnnotation(Class<?> clazz, Class<A> annotationType)
Annotation of annotationType from the supplied Class, traversing its interfaces and super classes if no annotation can be found on the
given class itself. This method explicitly handles class-level annotations which are not
declared as inherited as well as annotations on
interfaces.
clazz - the class to look for annotations onannotationType - the annotation class to look fornullpublic static Class<?> findAnnotationDeclaringClass(Class<? extends Annotation> annotationType, Class<?> clazz)
Class in the inheritance hierarchy of the specified clazz
(including the specified clazz itself) which declares an annotation for the
specified annotationType, or null if not found. If the supplied
clazz is null, null will be returned. If the
supplied clazz is an interface, only the interface itself will be checked; the
inheritance hierarchy for interfaces will not be traversed.
The standard Class API
does not provide a mechanism for determining which class in an inheritance hierarchy actually
declares an Annotation, so we need to handle this explicitly.
annotationType - the Class object corresponding to the annotation typeclazz - the Class object corresponding to the class on which to check for the
annotation, or null.Class in the inheritance hierarchy of the specified
clazz which declares an annotation for the specified
annotationType, or null if not found.Class.isAnnotationPresent(Class),
Class.getDeclaredAnnotations()public static boolean isAnnotationDeclaredLocally(Class<? extends Annotation> annotationType, Class<?> clazz)
annotationType is declared
locally on the supplied clazz. The supplied Class object may represent
any type. Note: This method does not determine if the annotation is
inherited. For greater clarity regarding inherited
annotations, consider using isAnnotationInherited(Class, Class) instead.
annotationType - the Class object corresponding to the annotation typeclazz - the Class object corresponding to the class on which to check for the
annotationtrue if an annotation for the specified annotationType is
declared locally on the supplied clazzClass.getDeclaredAnnotations(),
isAnnotationInherited(Class, Class)public static boolean isAnnotationInherited(Class<? extends Annotation> annotationType, Class<?> clazz)
annotationType is present on
the supplied clazz and is inherited
(i.e., not declared locally for the class). If the supplied clazz is an
interface, only the interface itself will be checked. In accord with standard meta-annotation
semantics, the inheritance hierarchy for interfaces will not be traversed. See the JavaDoc for the @Inherited meta-annotation for further
details regarding annotation inheritance.
annotationType - the Class object corresponding to the annotation typeclazz - the Class object corresponding to the class on which to check for the
annotationtrue if an annotation for the specified annotationType is
present on the supplied clazz and is inheritedClass.isAnnotationPresent(Class),
isAnnotationDeclaredLocally(Class, Class)public static Map<String,Object> getAnnotationAttributes(Annotation annotation)
annotation - the annotation to retrieve the attributes forpublic static Object getValue(Annotation annotation)
"value" attribute of a
single-element Annotation, given an annotation instance.annotation - the annotation instance from which to retrieve the valuenull if not foundgetValue(Annotation, String)public static Object getValue(Annotation annotation, String attributeName)
annotation - the annotation instance from which to retrieve the valueattributeName - the name of the attribute value to retrievenull if not foundgetValue(Annotation)public static Object getDefaultValue(Annotation annotation)
"value" attribute of a
single-element Annotation, given an annotation instance.annotation - the annotation instance from which to retrieve the default valuenull if not foundgetDefaultValue(Annotation, String)public static Object getDefaultValue(Annotation annotation, String attributeName)
annotation - the annotation instance from which to retrieve the default valueattributeName - the name of the attribute value to retrievenull if not found.getDefaultValue(Class, String)public static Object getDefaultValue(Class<? extends Annotation> annotationType)
"value" attribute of a
single-element Annotation, given the annotation type.annotationType - the annotation type for which the default value should be
retrievednull if not foundgetDefaultValue(Class, String)public static Object getDefaultValue(Class<? extends Annotation> annotationType, String attributeName)
annotation type.annotationType - the annotation type for which the default value should be
retrievedattributeName - the name of the attribute value to retrieve.null if not foundgetDefaultValue(Annotation, String)Copyright © GigaSpaces.