public class AnnotationUtils
extends java.lang.Object
Helper methods for working with Annotation
instances.
This class contains various utility methods that make working with annotations simpler.
Annotation
instances are always proxy objects; unfortunately
dynamic proxies cannot be depended upon to know how to implement certain
methods in the same manner as would be done by "natural" Annotation
s.
The methods presented in this class can be used to avoid that possibility. It
is of course also possible for dynamic proxies to actually delegate their
e.g. Annotation.equals(Object)
/Annotation.hashCode()
/
Annotation.toString()
implementations to AnnotationUtils
.
#ThreadSafe#
Modifier and Type | Field and Description |
---|---|
private static ToStringStyle |
TO_STRING_STYLE
A style that prints annotations as recommended.
|
Constructor and Description |
---|
AnnotationUtils()
AnnotationUtils instances should NOT be constructed in
standard programming. |
Modifier and Type | Method and Description |
---|---|
private static boolean |
annotationArrayMemberEquals(java.lang.annotation.Annotation[] a1,
java.lang.annotation.Annotation[] a2)
Helper method for comparing two arrays of annotations.
|
private static boolean |
arrayMemberEquals(java.lang.Class<?> componentType,
java.lang.Object o1,
java.lang.Object o2)
Helper method for comparing two objects of an array type.
|
private static int |
arrayMemberHash(java.lang.Class<?> componentType,
java.lang.Object o)
Helper method for generating a hash code for an array.
|
static boolean |
equals(java.lang.annotation.Annotation a1,
java.lang.annotation.Annotation a2)
Checks if two annotations are equal using the criteria for equality
presented in the
Annotation.equals(Object) API docs. |
static int |
hashCode(java.lang.annotation.Annotation a)
Generate a hash code for the given annotation using the algorithm
presented in the
Annotation.hashCode() API docs. |
private static int |
hashMember(java.lang.String name,
java.lang.Object value)
Helper method for generating a hash code for a member of an annotation.
|
static boolean |
isValidAnnotationMemberType(java.lang.Class<?> type)
Checks if the specified type is permitted as an annotation member.
|
private static boolean |
memberEquals(java.lang.Class<?> type,
java.lang.Object o1,
java.lang.Object o2)
Helper method for checking whether two objects of the given type are
equal.
|
static java.lang.String |
toString(java.lang.annotation.Annotation a)
Generate a string representation of an Annotation, as suggested by
Annotation.toString() . |
private static final ToStringStyle TO_STRING_STYLE
public AnnotationUtils()
AnnotationUtils
instances should NOT be constructed in
standard programming. Instead, the class should be used statically.
This constructor is public to permit tools that require a JavaBean instance to operate.
public static boolean equals(java.lang.annotation.Annotation a1, java.lang.annotation.Annotation a2)
Checks if two annotations are equal using the criteria for equality
presented in the Annotation.equals(Object)
API docs.
a1
- the first Annotation to compare, null
returns
false
unless both are null
a2
- the second Annotation to compare, null
returns
false
unless both are null
true
if the two annotations are equal
or both
null
public static int hashCode(java.lang.annotation.Annotation a)
Generate a hash code for the given annotation using the algorithm
presented in the Annotation.hashCode()
API docs.
a
- the Annotation for a hash code calculation is desired, not
null
java.lang.RuntimeException
- if an Exception
is encountered during
annotation member accessjava.lang.IllegalStateException
- if an annotation method invocation returns
null
public static java.lang.String toString(java.lang.annotation.Annotation a)
Generate a string representation of an Annotation, as suggested by
Annotation.toString()
.
a
- the annotation of which a string representation is desirednull
public static boolean isValidAnnotationMemberType(java.lang.Class<?> type)
Checks if the specified type is permitted as an annotation member.
The Java language specification only permits certain types to be used
in annotations. These include String
, Class
, primitive
types, Annotation
, Enum
, and single-dimensional arrays of
these types.
type
- the type to check, null
true
if the type is a valid type to use in an annotationprivate static int hashMember(java.lang.String name, java.lang.Object value)
name
- the name of the membervalue
- the value of the memberprivate static boolean memberEquals(java.lang.Class<?> type, java.lang.Object o1, java.lang.Object o2)
type
- the type of the objects to be comparedo1
- the first objecto2
- the second objectprivate static boolean arrayMemberEquals(java.lang.Class<?> componentType, java.lang.Object o1, java.lang.Object o2)
componentType
- the component type of the arrayo1
- the first objecto2
- the second objectprivate static boolean annotationArrayMemberEquals(java.lang.annotation.Annotation[] a1, java.lang.annotation.Annotation[] a2)
a1
- the first arraya2
- the second arrayprivate static int arrayMemberHash(java.lang.Class<?> componentType, java.lang.Object o)
componentType
- the component type of the arrayo
- the array