Class AnnotationAttributes

java.lang.Object
java.util.AbstractMap<K,V>
java.util.HashMap<K,V>
java.util.LinkedHashMap<String,Object>
org.springframework.core.annotation.AnnotationAttributes
All Implemented Interfaces:
Serializable, Cloneable, Map<String,Object>

public class AnnotationAttributes extends LinkedHashMap<String,Object>
LinkedHashMap subclass representing annotation attribute key-value pairs as read by AnnotationUtils, AnnotatedElementUtils, and Spring's reflection- and ASM-based AnnotationMetadata implementations.

Provides 'pseudo-reification' to avoid noisy Map generics in the calling code as well as convenience methods for looking up annotation attributes in a type-safe fashion.

Since:
3.1.1
Author:
Chris Beams, Sam Brannen, Juergen Hoeller
See Also:
  • Constructor Details

    • AnnotationAttributes

      public AnnotationAttributes()
      Create a new, empty AnnotationAttributes instance.
    • AnnotationAttributes

      public AnnotationAttributes(int initialCapacity)
      Create a new, empty AnnotationAttributes instance with the given initial capacity to optimize performance.
      Parameters:
      initialCapacity - initial size of the underlying map
    • AnnotationAttributes

      public AnnotationAttributes(Map<String,Object> map)
      Create a new AnnotationAttributes instance, wrapping the provided map and all its key-value pairs.
      Parameters:
      map - original source of annotation attribute key-value pairs
      See Also:
    • AnnotationAttributes

      public AnnotationAttributes(AnnotationAttributes other)
      Create a new AnnotationAttributes instance, wrapping the provided map and all its key-value pairs.
      Parameters:
      other - original source of annotation attribute key-value pairs
      See Also:
    • AnnotationAttributes

      public AnnotationAttributes(Class<? extends Annotation> annotationType)
      Create a new, empty AnnotationAttributes instance for the specified annotationType.
      Parameters:
      annotationType - the type of annotation represented by this AnnotationAttributes instance; never null
      Since:
      4.2
    • AnnotationAttributes

      public AnnotationAttributes(String annotationType, @Nullable ClassLoader classLoader)
      Create a new, empty AnnotationAttributes instance for the specified annotationType.
      Parameters:
      annotationType - the annotation type name represented by this AnnotationAttributes instance; never null
      classLoader - the ClassLoader to try to load the annotation type on, or null to just store the annotation type name
      Since:
      4.3.2
  • Method Details

    • annotationType

      @Nullable public Class<? extends Annotation> annotationType()
      Get the type of annotation represented by this AnnotationAttributes.
      Returns:
      the annotation type, or null if unknown
      Since:
      4.2
    • getString

      public String getString(String attributeName)
      Get the value stored under the specified attributeName as a string.
      Parameters:
      attributeName - the name of the attribute to get; never null or empty
      Returns:
      the value
      Throws:
      IllegalArgumentException - if the attribute does not exist or if it is not of the expected type
    • getStringArray

      public String[] getStringArray(String attributeName)
      Get the value stored under the specified attributeName as an array of strings.

      If the value stored under the specified attributeName is a string, it will be wrapped in a single-element array before returning it.

      Parameters:
      attributeName - the name of the attribute to get; never null or empty
      Returns:
      the value
      Throws:
      IllegalArgumentException - if the attribute does not exist or if it is not of the expected type
    • getBoolean

      public boolean getBoolean(String attributeName)
      Get the value stored under the specified attributeName as a boolean.
      Parameters:
      attributeName - the name of the attribute to get; never null or empty
      Returns:
      the value
      Throws:
      IllegalArgumentException - if the attribute does not exist or if it is not of the expected type
    • getNumber

      public <N extends Number> N getNumber(String attributeName)
      Get the value stored under the specified attributeName as a number.
      Parameters:
      attributeName - the name of the attribute to get; never null or empty
      Returns:
      the value
      Throws:
      IllegalArgumentException - if the attribute does not exist or if it is not of the expected type
    • getEnum

      public <E extends Enum<?>> E getEnum(String attributeName)
      Get the value stored under the specified attributeName as an enum.
      Parameters:
      attributeName - the name of the attribute to get; never null or empty
      Returns:
      the value
      Throws:
      IllegalArgumentException - if the attribute does not exist or if it is not of the expected type
    • getClass

      public <T> Class<? extends T> getClass(String attributeName)
      Get the value stored under the specified attributeName as a class.
      Parameters:
      attributeName - the name of the attribute to get; never null or empty
      Returns:
      the value
      Throws:
      IllegalArgumentException - if the attribute does not exist or if it is not of the expected type
    • getClassArray

      public Class<?>[] getClassArray(String attributeName)
      Get the value stored under the specified attributeName as an array of classes.

      If the value stored under the specified attributeName is a class, it will be wrapped in a single-element array before returning it.

      Parameters:
      attributeName - the name of the attribute to get; never null or empty
      Returns:
      the value
      Throws:
      IllegalArgumentException - if the attribute does not exist or if it is not of the expected type
    • getAnnotation

      public AnnotationAttributes getAnnotation(String attributeName)
      Get the AnnotationAttributes stored under the specified attributeName.

      Note: if you expect an actual annotation, invoke getAnnotation(String, Class) instead.

      Parameters:
      attributeName - the name of the attribute to get; never null or empty
      Returns:
      the AnnotationAttributes
      Throws:
      IllegalArgumentException - if the attribute does not exist or if it is not of the expected type
    • getAnnotation

      public <A extends Annotation> A getAnnotation(String attributeName, Class<A> annotationType)
      Get the annotation of type annotationType stored under the specified attributeName.
      Parameters:
      attributeName - the name of the attribute to get; never null or empty
      annotationType - the expected annotation type; never null
      Returns:
      the annotation
      Throws:
      IllegalArgumentException - if the attribute does not exist or if it is not of the expected type
      Since:
      4.2
    • getAnnotationArray

      public AnnotationAttributes[] getAnnotationArray(String attributeName)
      Get the array of AnnotationAttributes stored under the specified attributeName.

      If the value stored under the specified attributeName is an instance of AnnotationAttributes, it will be wrapped in a single-element array before returning it.

      Note: if you expect an actual array of annotations, invoke getAnnotationArray(String, Class) instead.

      Parameters:
      attributeName - the name of the attribute to get; never null or empty
      Returns:
      the array of AnnotationAttributes
      Throws:
      IllegalArgumentException - if the attribute does not exist or if it is not of the expected type
    • getAnnotationArray

      public <A extends Annotation> A[] getAnnotationArray(String attributeName, Class<A> annotationType)
      Get the array of type annotationType stored under the specified attributeName.

      If the value stored under the specified attributeName is an Annotation, it will be wrapped in a single-element array before returning it.

      Parameters:
      attributeName - the name of the attribute to get; never null or empty
      annotationType - the expected annotation type; never null
      Returns:
      the annotation array
      Throws:
      IllegalArgumentException - if the attribute does not exist or if it is not of the expected type
      Since:
      4.2
    • toString

      public String toString()
      Overrides:
      toString in class AbstractMap<String,Object>
    • fromMap

      @Nullable public static AnnotationAttributes fromMap(@Nullable Map<String,Object> map)
      Return an AnnotationAttributes instance based on the given map.

      If the map is already an AnnotationAttributes instance, it will be cast and returned immediately without creating a new instance. Otherwise a new instance will be created by passing the supplied map to the AnnotationAttributes(Map) constructor.

      Parameters:
      map - original source of annotation attribute key-value pairs