Package org.jboss.jandex
Class AnnotationValue
java.lang.Object
org.jboss.jandex.AnnotationValue
- Direct Known Subclasses:
AnnotationValue.ArrayValue
,AnnotationValue.BooleanValue
,AnnotationValue.ByteValue
,AnnotationValue.CharacterValue
,AnnotationValue.ClassValue
,AnnotationValue.DoubleValue
,AnnotationValue.EnumValue
,AnnotationValue.FloatValue
,AnnotationValue.IntegerValue
,AnnotationValue.LongValue
,AnnotationValue.NestedAnnotation
,AnnotationValue.ShortValue
,AnnotationValue.StringValue
An annotation value represents a specific name and value combination in the
parameter list of an annotation instance. It also can represent a nested
array element in the case of an array value.
An annotation value can be any Java primitive:
- byte
- short
- int
- char
- float
- double
- long
- boolean
As well as any the following specialty types:
- String
- Class
- Enum
- Nested annotation
In addition a value can be a single-dimension array of any of the above types
To access a value, the proper typed method must be used that matches the
expected type of the annotation parameter. In addition, some methods will
allow conversion of different types. For example, a byte can be returned as
an integer using asInt()
. Also all value types support a
String representation.
To determine the underlying type, kind()
can be used.
Thread-Safety
This class is immutable and can be shared between threads without safe publication.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) static final class
(package private) static final class
(package private) static final class
(package private) static final class
(package private) static final class
(package private) static final class
(package private) static final class
(package private) static final class
(package private) static final class
static enum
Specifies the kind of annotation value, which can be used to determine the underlying Java type.(package private) static final class
(package private) static final class
(package private) static final class
(package private) static final class
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) static final AnnotationValue[]
private final String
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription(package private) AnnotationValue[]
asArray()
Returns the underlying array value as aList
ofAnnotationValue
.boolean
Returns the underlying boolean value as Java primitive boolean.boolean[]
Returns the underlying boolean array.byte
asByte()
Converts the underlying numerical type to a byte as if it was casted in Java.byte[]
Converts an underlying numerical array to a Java primitive byte array.char
asChar()
Returns the underlying character value as Java primitive char.char[]
Returns the underlying character array.asClass()
Returns the class name, inType
form, that represents a Java Class used by this value.Type[]
Returns an array of class types representing the underlying class array value.double
asDouble()
Converts the underlying numerical type to a double as if it was casted in Java.double[]
Converts an underlying numerical array to a Java primitive double array.asEnum()
Returns the constant name, in string form, that represents the Java enumeration of this value.String[]
Returns an array of the constant name, in string form, that represents the Java enumeration of each array element The individual element values are the same as the one returned byEnum.name()
.Returns the type name, in DotName form, that represents the Java enumeration of this value.DotName[]
Returns an array of the type name, in DotName form, that represents the Java enumeration of each array element.float
asFloat()
Converts the underlying numerical type to a float as if it was casted in Java.float[]
Converts an underlying numerical array to a Java primitive float array.int
asInt()
Converts the underlying numerical type to an integer as if it was casted in Java.int[]
Converts an underlying numerical array to a Java primitive integer array.long
asLong()
Converts the underlying numerical type to an long as if it was casted in Java.long[]
Converts an underlying numerical array to a Java primitive long array.asNested()
Returns a nested annotation represented by this value.Returns an array of nested annotations representing the underlying annotation array value.short
asShort()
Converts the underlying numerical type to a short as if it was casted in Java.short[]
Converts an underlying numerical array to a Java primitive short array.asString()
Returns the string representation of the underlying value type.String[]
Returns a string array representation of the underlying array value.Returns the kind of value that represents the component type of this array if it can be determined.static AnnotationValue
createArrayValue
(String name, List<AnnotationValue> values) static AnnotationValue
createArrayValue
(String name, AnnotationValue[] values) static AnnotationValue
createBooleanValue
(String name, boolean bool) static AnnotationValue
createByteValue
(String name, byte b) static AnnotationValue
createCharacterValue
(String name, char c) static AnnotationValue
createClassValue
(String name, Type type) static AnnotationValue
createDoubleValue
(String name, double d) static AnnotationValue
createDouleValue
(String name, double d) Deprecated.static AnnotationValue
createEnumValue
(String name, DotName typeName, String value) static AnnotationValue
createFloatValue
(String name, float f) static AnnotationValue
createIntegerValue
(String name, int i) static AnnotationValue
createLongalue
(String name, long l) Deprecated.UsecreateLongValue(String, long)
instead.static AnnotationValue
createLongValue
(String name, long l) static AnnotationValue
createNestedAnnotationValue
(String name, AnnotationInstance instance) static AnnotationValue
createShortValue
(String name, short s) static AnnotationValue
createStringValue
(String name, String string) boolean
Compares this annotation value to another annotation value, and returns true if equal.int
hashCode()
Computes a hash code for this annotation value.abstract AnnotationValue.Kind
kind()
Returns the kind of this value.final String
name()
Returns the name of this value, which is typically the parameter name in the annotation declaration.toString()
(package private) String
toString
(boolean includeName) abstract Object
value()
Returns a detyped value that represents the underlying annotation value.
-
Field Details
-
EMPTY_ARRAY
-
name
-
-
Constructor Details
-
AnnotationValue
AnnotationValue(String name)
-
-
Method Details
-
createByteValue
-
createShortValue
-
createIntegerValue
-
createCharacterValue
-
createFloatValue
-
createDouleValue
Deprecated.UsecreateDoubleValue(String, double)
instead. -
createDoubleValue
-
createLongalue
Deprecated.UsecreateLongValue(String, long)
instead. -
createLongValue
-
createBooleanValue
-
createStringValue
-
createClassValue
-
createEnumValue
-
createArrayValue
-
createArrayValue
-
createNestedAnnotationValue
-
name
Returns the name of this value, which is typically the parameter name in the annotation declaration. The value may not represent a parameter (e.g an array element member), in which case name will simply return an empty string ("")- Returns:
- the name of this value
-
value
Returns a detyped value that represents the underlying annotation value. It is recommended that the type specific methods be used instead.- Returns:
- the underlying value
-
kind
Returns the kind of this value. The kind includes all Java primitives, String and Enum types, nested values, and finally arrays of the above. Since the return type is itself an enumeration, it can be used with Java switch statements.A special
AnnotationValue.Kind.UNKNOWN
kind is used to refer to components of zero-length arrays, as the underlying type is not known.- Returns:
- the kind of value
- Since:
- 2.0
-
componentKind
Returns the kind of value that represents the component type of this array if it can be determined. Otherwise, this method returnsAnnotationValue.Kind.UNKNOWN
. This happens when the annotation value represents an empty array. If the underlying value is not an array an exception will be thrown.- Returns:
- the kind of component, or
AnnotationValue.Kind.UNKNOWN
if it can not be determined. - Throws:
IllegalArgumentException
- if not an array- Since:
- 2.0
-
asInt
public int asInt()Converts the underlying numerical type to an integer as if it was casted in Java.- Returns:
- an integer representing the numerical parameter
- Throws:
IllegalArgumentException
- if the value is not numerical
-
asLong
public long asLong()Converts the underlying numerical type to an long as if it was casted in Java.- Returns:
- a long representing the numerical parameter
- Throws:
IllegalArgumentException
- if the value is not numerical
-
asShort
public short asShort()Converts the underlying numerical type to a short as if it was casted in Java.- Returns:
- a short representing the numerical parameter
- Throws:
IllegalArgumentException
- if the value is not numerical
-
asByte
public byte asByte()Converts the underlying numerical type to a byte as if it was casted in Java.- Returns:
- a byte representing the numerical parameter
- Throws:
IllegalArgumentException
- if the value is not numerical
-
asFloat
public float asFloat()Converts the underlying numerical type to a float as if it was casted in Java.- Returns:
- a float representing the numerical parameter
- Throws:
IllegalArgumentException
- if the value is not numerical
-
asDouble
public double asDouble()Converts the underlying numerical type to a double as if it was casted in Java.- Returns:
- a double representing the numerical parameter
- Throws:
IllegalArgumentException
- if the value is not numerical
-
asChar
public char asChar()Returns the underlying character value as Java primitive char.- Returns:
- a char representing the character parameter
- Throws:
IllegalArgumentException
- if the value is not a character
-
asBoolean
public boolean asBoolean()Returns the underlying boolean value as Java primitive boolean.- Returns:
- a boolean representing the character parameter
- Throws:
IllegalArgumentException
- if the value is not a boolean
-
asString
Returns the string representation of the underlying value type. The representation may or may not be convertible to the type it represents. This is best used on String types, but can also provide a useful way to quickly convert a value to a String.- Returns:
- a string representing the value parameter
-
asEnum
Returns the constant name, in string form, that represents the Java enumeration of this value. The value is the same as the one returned byEnum.name()
.- Returns:
- the string name of a Java enumeration
- Throws:
IllegalArgumentException
- if the value is not an enum
-
asEnumType
Returns the type name, in DotName form, that represents the Java enumeration of this value. The value is the same as the one returned byObject.getClass()
.- Returns:
- the type name of a Java enumeration
- Throws:
IllegalArgumentException
- if the value is not an enum
-
asClass
Returns the class name, inType
form, that represents a Java Class used by this value. In addition to standard class name, it can also refer to specialty types, such asVoid
and primitive types (e.g. int.class). More specifically, any erased type that a method can return is a valid annotation Class type.- Returns:
- the Java type of this value
- Throws:
IllegalArgumentException
- if the value is not a Class
-
asNested
Returns a nested annotation represented by this value. The nested annotation will have a null target, but may contain an arbitrary amount of nested values- Returns:
- the underlying nested annotation instance
- Throws:
IllegalArgumentException
- if the value is not a nested annotation
-
asArray
AnnotationValue[] asArray() -
asArrayList
Returns the underlying array value as aList
ofAnnotationValue
.- Returns:
- the underlying array value
- Throws:
IllegalArgumentException
- if this value is not an array
-
asIntArray
public int[] asIntArray()Converts an underlying numerical array to a Java primitive integer array.- Returns:
- an int array that represents this value
- Throws:
IllegalArgumentException
- if this value is not a numerical array.
-
asLongArray
public long[] asLongArray()Converts an underlying numerical array to a Java primitive long array.- Returns:
- a long array that represents this value
- Throws:
IllegalArgumentException
- if this value is not a numerical array.
-
asShortArray
public short[] asShortArray()Converts an underlying numerical array to a Java primitive short array.- Returns:
- a short array that represents this value
- Throws:
IllegalArgumentException
- if this value is not a numerical array.
-
asByteArray
public byte[] asByteArray()Converts an underlying numerical array to a Java primitive byte array.- Returns:
- a byte array that represents this value
- Throws:
IllegalArgumentException
- if this value is not a numerical array.
-
asFloatArray
public float[] asFloatArray()Converts an underlying numerical array to a Java primitive float array.- Returns:
- a float array that represents this value
- Throws:
IllegalArgumentException
- if this value is not a numerical array.
-
asDoubleArray
public double[] asDoubleArray()Converts an underlying numerical array to a Java primitive double array.- Returns:
- a double array that represents this value
- Throws:
IllegalArgumentException
- if this value is not a numerical array.
-
asCharArray
public char[] asCharArray()Returns the underlying character array.- Returns:
- a character array that represents this value
- Throws:
IllegalArgumentException
- if this value is not a character array.
-
asBooleanArray
public boolean[] asBooleanArray()Returns the underlying boolean array.- Returns:
- a boolean array that represents this value
- Throws:
IllegalArgumentException
- if this value is not a boolean array.
-
asStringArray
Returns a string array representation of the underlying array value. The behavior is identical toasString()
as if it were applied to every array element.- Returns:
- a string array representing the underlying array value
- Throws:
IllegalArgumentException
- if this value is not an array
-
asEnumArray
Returns an array of the constant name, in string form, that represents the Java enumeration of each array element The individual element values are the same as the one returned byEnum.name()
.- Returns:
- an array of string names of a Java enums
- Throws:
IllegalArgumentException
- if the value is not an enum array
-
asEnumTypeArray
Returns an array of the type name, in DotName form, that represents the Java enumeration of each array element. The individual element values are the same as the one returned byObject.getClass()
. Note that JLS restricts an enum array parameter to the same type. Also, when an empty array is specified in a value, it's types can not be determined.- Returns:
- an array of string type names of Java enum array elements
- Throws:
IllegalArgumentException
- if the value is not an enum array
-
asClassArray
Returns an array of class types representing the underlying class array value. Each element has the same behavior asasClass()
- Returns:
- a class array representing this class array value
- Throws:
IllegalArgumentException
- if the value is not a class array
-
asNestedArray
Returns an array of nested annotations representing the underlying annotation array value. Each element has the same behavior asasNested()
- Returns:
- an annotation array representing this annotation array value
- Throws:
IllegalArgumentException
- if the value is not an annotation array
-
toString
-
toString
-
equals
Compares this annotation value to another annotation value, and returns true if equal. -
hashCode
public int hashCode()Computes a hash code for this annotation value.
-
createDoubleValue(String, double)
instead.