Package org.springframework.core.annotation

# 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:
  - `AnnotationUtils.getAnnotationAttributes(java.lang.annotation.Annotation)`
  - `AnnotatedElementUtils`
  - Serialized Form

## Nested Class Summary

## Nested classes/interfaces inherited from class java.util.AbstractMap

`AbstractMap.SimpleEntry<K extends Object,V extends Object>, AbstractMap.SimpleImmutableEntry<K extends Object,V extends Object>`

## Constructor Summary

Constructors
Constructor
Description
`AnnotationAttributes()`
Create a new, empty `AnnotationAttributes` instance.
`AnnotationAttributes(int initialCapacity)`
Create a new, empty `AnnotationAttributes` instance with the given initial capacity to optimize performance.
`AnnotationAttributes(Class<? extends Annotation> annotationType)`
Create a new, empty `AnnotationAttributes` instance for the specified `annotationType`.
`AnnotationAttributes(String annotationType, ClassLoader classLoader)`
Create a new, empty `AnnotationAttributes` instance for the specified `annotationType`.
`AnnotationAttributes(Map<String,Object> map)`
Create a new `AnnotationAttributes` instance, wrapping the provided map and all its key-value pairs.
`AnnotationAttributes(AnnotationAttributes other)`
Create a new `AnnotationAttributes` instance, wrapping the provided map and all its key-value pairs.

## Method Summary

Modifier and Type
Method
Description
`Class<? extends Annotation>`
`annotationType()`
Get the type of annotation represented by this `AnnotationAttributes`.
`static AnnotationAttributes`
`fromMap(Map<String,Object> map)`
Return an `AnnotationAttributes` instance based on the given map.
`AnnotationAttributes`
`getAnnotation(String attributeName)`
Get the `AnnotationAttributes` stored under the specified `attributeName`.
`<A extends Annotation>
A`
`getAnnotation(String attributeName, Class<A> annotationType)`
Get the annotation of type `annotationType` stored under the specified `attributeName`.
`AnnotationAttributes[]`
`getAnnotationArray(String attributeName)`
Get the array of `AnnotationAttributes` stored under the specified `attributeName`.
`<A extends Annotation>
A[]`
`getAnnotationArray(String attributeName, Class<A> annotationType)`
Get the array of type `annotationType` stored under the specified `attributeName`.
`boolean`
`getBoolean(String attributeName)`
Get the value stored under the specified `attributeName` as a boolean.
`<T> Class<? extends T>`
`getClass(String attributeName)`
Get the value stored under the specified `attributeName` as a class.
`Class<?>[]`
`getClassArray(String attributeName)`
Get the value stored under the specified `attributeName` as an array of classes.
`<E extends Enum<?>>
E`
`getEnum(String attributeName)`
Get the value stored under the specified `attributeName` as an enum.
`<N extends Number>
N`
`getNumber(String attributeName)`
Get the value stored under the specified `attributeName` as a number.
`String`
`getString(String attributeName)`
Get the value stored under the specified `attributeName` as a string.
`String[]`
`getStringArray(String attributeName)`
Get the value stored under the specified `attributeName` as an array of strings.
`String`
`toString()`

### Methods inherited from class java.util.LinkedHashMap

`clear, containsValue, entrySet, forEach, get, getOrDefault, keySet, removeEldestEntry, replaceAll, values`

### Methods inherited from class java.util.HashMap

`clone, compute, computeIfAbsent, computeIfPresent, containsKey, isEmpty, merge, put, putAll, putIfAbsent, remove, remove, replace, replace, size`

### Methods inherited from class java.util.AbstractMap

`equals, hashCode`

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

`finalize, getClass, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface java.util.Map

`compute, computeIfAbsent, computeIfPresent, containsKey, equals, hashCode, isEmpty, merge, put, putAll, putIfAbsent, remove, remove, replace, replace, size`

## 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:
  - `fromMap(Map)`

### 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:
  - `fromMap(Map)`

### 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