Package org.apache.commons.lang3

## Class AnnotationUtils

- java.lang.Object
- - org.apache.commons.lang3.AnnotationUtils

    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#

Since:
  3.0

### Constructor Summary

Constructors
`AnnotationUtils()` `AnnotationUtils` instances should NOT be constructed in standard programming.

### Method Summary

All Methods Static Methods Concrete Methods
`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.
`static boolean` `isValidAnnotationMemberType​(java.lang.Class<?> type)` Checks if the specified type is permitted as an annotation member.
`static java.lang.String` `toString​(java.lang.annotation.Annotation a)` Generate a string representation of an Annotation, as suggested by `Annotation.toString()`.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### AnnotationUtils

    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.

### Method Detail

#### equals

    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.

Parameters:
  `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`
Returns:
  `true` if the two annotations are `equal` or both `null`

#### hashCode

    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.

Parameters:
  `a` - the Annotation for a hash code calculation is desired, not `null`
Returns:
  the calculated hash code
Throws:
  `java.lang.RuntimeException` - if an `Exception` is encountered during annotation member access
  `java.lang.IllegalStateException` - if an annotation method invocation returns `null`

#### toString

    public static java.lang.String toString​(java.lang.annotation.Annotation a)

Generate a string representation of an Annotation, as suggested by `Annotation.toString()`.

Parameters:
  `a` - the annotation of which a string representation is desired
Returns:
  the standard string representation of an annotation, not `null`

#### isValidAnnotationMemberType

    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.

Parameters:
  `type` - the type to check, `null`
Returns:
  `true` if the type is a valid type to use in an annotation