Package org.jboss.jandex
Class AnnotationInstance
java.lang.Object
org.jboss.jandex.AnnotationInstance
An annotation instance represents a specific usage of an annotation on a
target. It contains a set of members, as well as a reference to the target
itself (e.g. class, field, method, etc).
Thread-Safety
This class is immutable and can be shared between threads without safe publication.- Author:
- Jason T. Greene
-
Method Summary
Modifier and TypeMethodDescriptionstatic AnnotationInstanceBuilderbuilder(Class<? extends Annotation> annotationType) Creates a builder of annotation instances of givenannotationType.static AnnotationInstanceBuilderCreates a builder of annotation instances of givenannotationType.static AnnotationInstanceBuilderCreates a builder of annotation instances of givenannotationType.static AnnotationInstanceBuilderCreates a builder of annotation instances of givenannotationType.static AnnotationInstancecreate(DotName name, boolean visible, AnnotationTarget target, List<AnnotationValue> values) Construct a new mock annotation instance.static AnnotationInstancecreate(DotName name, boolean visible, AnnotationTarget target, AnnotationValue[] values) Construct a new mock annotation instance.static AnnotationInstancecreate(DotName name, AnnotationTarget target, List<AnnotationValue> values) Construct a new mock annotation instance.static AnnotationInstancecreate(DotName name, AnnotationTarget target, AnnotationValue[] values) Construct a new mock annotation instance.Returns an equivalence proxy for this annotation instance.booleanReturns whether this annotation instance is equal to another instance.intReturns an equivalence hash code.booleanequivalentTo(AnnotationInstance other) Returns whether this annotation instance is equivalent to theotherannotation instance.inthashCode()Returns a hash code representing this object.name()The name of this annotation in DotName form.booleanReturns true if this annotation uses RetentionPolicy.RUNTIME and is visible to runtime reflection.target()The program element that this annotation was declared on.toString()Returns a string representation for this annotation instance.toString(boolean simple) Returns an optionally simplified string that represents this annotation instance.value()Returns the member that has the special default namevalue.Returns the member of this annotation that has the specified name.values()Returns an immutable list of all members of this annotation instance.valuesWithDefaults(IndexView index) Returns a list of all members of this annotation instance, including default values if defined.valueWithDefault(IndexView index) Returns the member of this annotation that has special namevalue, accounting for its default value.valueWithDefault(IndexView index, String name) Returns the member of this annotation that has the specified name, accounting for its default value.
-
Method Details
-
builder
Creates a builder of annotation instances of givenannotationType. This allows creating anAnnotationInstancein a nicer way than using any of thecreate()methods.- Parameters:
annotationType- the type of annotation whose instance will be created, must not benull- Returns:
- a builder instance, never
null
-
builder
Creates a builder of annotation instances of givenannotationType. This allows creating anAnnotationInstancein a nicer way than using any of thecreate()methods.- Parameters:
annotationType- the type of annotation whose instance will be created, must not benull- Returns:
- a builder instance, never
null
-
builder
Creates a builder of annotation instances of givenannotationType. This allows creating anAnnotationInstancein a nicer way than using any of thecreate()methods.The given
annotationTypeis assumed to have the runtime retention.- Parameters:
annotationType- the type of annotation whose instance will be created, must not benull- Returns:
- a builder instance, never
null
-
builder
Creates a builder of annotation instances of givenannotationType. This allows creating anAnnotationInstancein a nicer way than using any of thecreate()methods.- Parameters:
annotationType- the type of annotation whose instance will be created, must not benullruntimeVisible- whether the annotation type has the runtime retention- Returns:
- a builder instance, never
null
-
create
public static AnnotationInstance create(DotName name, AnnotationTarget target, AnnotationValue[] values) Construct a new mock annotation instance. The passedvaluesarray will be defensively copied. It is assumed that the annotation isruntimeVisible().- Parameters:
name- the name of the annotation instancetarget- the thing the annotation is declared onvalues- the members of this annotation instance- Returns:
- the new mock Annotation Instance
-
create
public static AnnotationInstance create(DotName name, boolean visible, AnnotationTarget target, AnnotationValue[] values) Construct a new mock annotation instance. The passedvaluesarray will be defensively copied.- Parameters:
name- the name of the annotation instancevisible- whether the annotation is visible at runtime via the reflection APItarget- the thing the annotation is declared onvalues- the members of this annotation instance- Returns:
- the new mock Annotation Instance
-
create
public static AnnotationInstance create(DotName name, AnnotationTarget target, List<AnnotationValue> values) Construct a new mock annotation instance. The passedvalueslist will be defensively copied. It is assumed that the annotation isruntimeVisible().- Parameters:
name- the name of the annotation instancetarget- the thing the annotation is declared onvalues- the members of this annotation instance- Returns:
- the new mock Annotation Instance
-
create
public static AnnotationInstance create(DotName name, boolean visible, AnnotationTarget target, List<AnnotationValue> values) Construct a new mock annotation instance. The passedvalueslist will be defensively copied.- Parameters:
name- the name of the annotation instancevisible- whether the annotation is visible at runtime via the reflection APItarget- the thing the annotation is declared onvalues- the members of this annotation instance- Returns:
- the new mock Annotation Instance
-
name
The name of this annotation in DotName form.- Returns:
- the name of this annotation
-
target
The program element that this annotation was declared on. This can be a class, a field, a method, a method parameter, or a type in case of type annotations. In addition, it may benullif this instance is a nested annotation, in which case there is no target.- Returns:
- the target this annotation instance refers to
-
value
Returns the member of this annotation that has the specified name. If the member was not specified by this instance,nullis returned. Note that this also applies to a defaulted member, whose value is not recorded in the target class file.- Parameters:
name- the name of the annotation member- Returns:
- the annotation member with specified name, or
null
-
value
Returns the member that has the special default namevalue.- Returns:
- the
valuemember
-
valueWithDefault
Returns the member of this annotation that has the specified name, accounting for its default value. Since an annotation's defaults are only stored on the annotation's defining class, and not usages of the annotation, an index containing the annotation class must be provided as a parameter. If the index does not contain the defining annotation class, then anIllegalArgumentExceptionwill be thrown to prevent non-deterministic results.If the member was not specified by this annotation instance, then the annotation's
ClassInfois checked for a default value. If there is a default, that value is returned. Otherwisenullis returned.- Parameters:
index- the index containing the defining annotation classname- the name of the annotation member- Returns:
- the annotation member with specified name, or
null - Throws:
IllegalArgumentException- if index does not contain the defining annotation class- Since:
- 2.1
-
valueWithDefault
Returns the member of this annotation that has special namevalue, accounting for its default value. Since an annotation's defaults are only stored on the annotation's defining class, and not usages of the annotation, an index containing the annotation class must be provided as a parameter. If the index does not contain the defining annotation class, then anIllegalArgumentExceptionwill be thrown to prevent non-deterministic results.If the
valuemember was not specified by this instance, then the annotation'sClassInfois checked for a default value. If there is a default, that value is returned. Otherwisenullis returned.- Parameters:
index- the index containing the defining annotation class- Returns:
- the
valueannotation member, ornull - Throws:
IllegalArgumentException- if index does not contain the defining annotation class- Since:
- 2.1
-
valuesWithDefaults
Returns a list of all members of this annotation instance, including default values if defined. Since an annotation's defaults are only stored on the annotation's defining class, and not usages of the annotation, an index containing the annotation class must be provided as a parameter. If the index does not contain the defining annotation class, then anIllegalArgumentExceptionwill be thrown to prevent non-deterministic results.The order of this list is undefined.
- Returns:
- immutable list of this annotation's members
- Throws:
IllegalArgumentException- if index does not contain the defining annotation class- Since:
- 2.1
-
values
Returns an immutable list of all members of this annotation instance. While random access is allowed, the ordering algorithm of the list should not be relied upon. Although it will be consistent for the life of this instance.- Returns:
- immutable list of this annotation's members
-
runtimeVisible
public boolean runtimeVisible()Returns true if this annotation uses RetentionPolicy.RUNTIME and is visible to runtime reflection.- Since:
- 3.0
-
toString
Returns an optionally simplified string that represents this annotation instance. If simplified the output is smaller but missing information, such as the package qualifier.- Parameters:
simple- whether to provide a simpler string representation- Returns:
- a string representation for this object
- Since:
- 2.0
-
toString
Returns a string representation for this annotation instance. This method is equivalent to callingtoString(boolean)with a value oftrue. -
equals
Returns whether this annotation instance is equal to another instance. Two annotation instances are equal if their names and values of their members are equal, and they share the exact sameAnnotationTargetinstance. -
hashCode
public int hashCode()Returns a hash code representing this object. -
equivalentTo
Returns whether this annotation instance is equivalent to theotherannotation instance. Two annotation instances are equivalent if their names and members are equal. No attention is paid to the annotation target.- Parameters:
other- the annotation instance to compare to- Returns:
trueif equivalent,falseif not- See Also:
-
equivalenceHashCode
public int equivalenceHashCode()Returns an equivalence hash code. This is consistent withequivalentTo(AnnotationInstance), therefore no attention is paid to the annotation target.- Returns:
- hash code consistent with annotation equivalence
-
createEquivalenceProxy
Returns an equivalence proxy for this annotation instance.
-