Class AnnotationAttributes
- All Implemented Interfaces:
Serializable
,Cloneable
,Map<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:
-
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
ConstructorDescriptionCreate a new, emptyAnnotationAttributes
instance.AnnotationAttributes
(int initialCapacity) Create a new, emptyAnnotationAttributes
instance with the given initial capacity to optimize performance.AnnotationAttributes
(Class<? extends Annotation> annotationType) Create a new, emptyAnnotationAttributes
instance for the specifiedannotationType
.AnnotationAttributes
(String annotationType, ClassLoader classLoader) Create a new, emptyAnnotationAttributes
instance for the specifiedannotationType
.AnnotationAttributes
(Map<String, Object> map) Create a newAnnotationAttributes
instance, wrapping the provided map and all its key-value pairs.Create a newAnnotationAttributes
instance, wrapping the provided map and all its key-value pairs. -
Method Summary
Modifier and TypeMethodDescriptionClass<? extends Annotation>
Get the type of annotation represented by thisAnnotationAttributes
.static AnnotationAttributes
Return anAnnotationAttributes
instance based on the given map.getAnnotation
(String attributeName) Get theAnnotationAttributes
stored under the specifiedattributeName
.<A extends Annotation>
AgetAnnotation
(String attributeName, Class<A> annotationType) Get the annotation of typeannotationType
stored under the specifiedattributeName
.getAnnotationArray
(String attributeName) Get the array ofAnnotationAttributes
stored under the specifiedattributeName
.<A extends Annotation>
A[]getAnnotationArray
(String attributeName, Class<A> annotationType) Get the array of typeannotationType
stored under the specifiedattributeName
.boolean
getBoolean
(String attributeName) Get the value stored under the specifiedattributeName
as a boolean.<T> Class<? extends T>
Get the value stored under the specifiedattributeName
as a class.Class<?>[]
getClassArray
(String attributeName) Get the value stored under the specifiedattributeName
as an array of classes.<E extends Enum<?>>
EGet the value stored under the specifiedattributeName
as an enum.<N extends Number>
NGet the value stored under the specifiedattributeName
as a number.Get the value stored under the specifiedattributeName
as a string.String[]
getStringArray
(String attributeName) Get the value stored under the specifiedattributeName
as an array of strings.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, emptyAnnotationAttributes
instance. -
AnnotationAttributes
public AnnotationAttributes(int initialCapacity) Create a new, emptyAnnotationAttributes
instance with the given initial capacity to optimize performance.- Parameters:
initialCapacity
- initial size of the underlying map
-
AnnotationAttributes
Create a newAnnotationAttributes
instance, wrapping the provided map and all its key-value pairs.- Parameters:
map
- original source of annotation attribute key-value pairs- See Also:
-
AnnotationAttributes
Create a newAnnotationAttributes
instance, wrapping the provided map and all its key-value pairs.- Parameters:
other
- original source of annotation attribute key-value pairs- See Also:
-
AnnotationAttributes
Create a new, emptyAnnotationAttributes
instance for the specifiedannotationType
.- Parameters:
annotationType
- the type of annotation represented by thisAnnotationAttributes
instance; nevernull
- Since:
- 4.2
-
AnnotationAttributes
Create a new, emptyAnnotationAttributes
instance for the specifiedannotationType
.- Parameters:
annotationType
- the annotation type name represented by thisAnnotationAttributes
instance; nevernull
classLoader
- the ClassLoader to try to load the annotation type on, ornull
to just store the annotation type name- Since:
- 4.3.2
-
-
Method Details
-
annotationType
Get the type of annotation represented by thisAnnotationAttributes
.- Returns:
- the annotation type, or
null
if unknown - Since:
- 4.2
-
getString
Get the value stored under the specifiedattributeName
as a string.- Parameters:
attributeName
- the name of the attribute to get; nevernull
or empty- Returns:
- the value
- Throws:
IllegalArgumentException
- if the attribute does not exist or if it is not of the expected type
-
getStringArray
Get the value stored under the specifiedattributeName
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; nevernull
or empty- Returns:
- the value
- Throws:
IllegalArgumentException
- if the attribute does not exist or if it is not of the expected type
-
getBoolean
Get the value stored under the specifiedattributeName
as a boolean.- Parameters:
attributeName
- the name of the attribute to get; nevernull
or empty- Returns:
- the value
- Throws:
IllegalArgumentException
- if the attribute does not exist or if it is not of the expected type
-
getNumber
Get the value stored under the specifiedattributeName
as a number.- Parameters:
attributeName
- the name of the attribute to get; nevernull
or empty- Returns:
- the value
- Throws:
IllegalArgumentException
- if the attribute does not exist or if it is not of the expected type
-
getEnum
Get the value stored under the specifiedattributeName
as an enum.- Parameters:
attributeName
- the name of the attribute to get; nevernull
or empty- Returns:
- the value
- Throws:
IllegalArgumentException
- if the attribute does not exist or if it is not of the expected type
-
getClass
Get the value stored under the specifiedattributeName
as a class.- Parameters:
attributeName
- the name of the attribute to get; nevernull
or empty- Returns:
- the value
- Throws:
IllegalArgumentException
- if the attribute does not exist or if it is not of the expected type
-
getClassArray
Get the value stored under the specifiedattributeName
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; nevernull
or empty- Returns:
- the value
- Throws:
IllegalArgumentException
- if the attribute does not exist or if it is not of the expected type
-
getAnnotation
Get theAnnotationAttributes
stored under the specifiedattributeName
.Note: if you expect an actual annotation, invoke
getAnnotation(String, Class)
instead.- Parameters:
attributeName
- the name of the attribute to get; nevernull
or empty- Returns:
- the
AnnotationAttributes
- Throws:
IllegalArgumentException
- if the attribute does not exist or if it is not of the expected type
-
getAnnotation
Get the annotation of typeannotationType
stored under the specifiedattributeName
.- Parameters:
attributeName
- the name of the attribute to get; nevernull
or emptyannotationType
- the expected annotation type; nevernull
- Returns:
- the annotation
- Throws:
IllegalArgumentException
- if the attribute does not exist or if it is not of the expected type- Since:
- 4.2
-
getAnnotationArray
Get the array ofAnnotationAttributes
stored under the specifiedattributeName
.If the value stored under the specified
attributeName
is an instance ofAnnotationAttributes
, 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; nevernull
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
Get the array of typeannotationType
stored under the specifiedattributeName
.If the value stored under the specified
attributeName
is anAnnotation
, it will be wrapped in a single-element array before returning it.- Parameters:
attributeName
- the name of the attribute to get; nevernull
or emptyannotationType
- the expected annotation type; nevernull
- 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
- Overrides:
toString
in classAbstractMap<String,
Object>
-
fromMap
Return anAnnotationAttributes
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 theAnnotationAttributes(Map)
constructor.- Parameters:
map
- original source of annotation attribute key-value pairs
-