Class ClassInfo
- All Implemented Interfaces:
AnnotationTarget
Global information including the parent class, implemented interfaces, and access flags are also provided since this information is often necessary. Implicitly declared (aka mandated) and synthetic members are included as well.
Note that a parent class and interface may exist outside of the scope of the index (e.g. classes in a different jar) so the references are stored as names instead of direct references. It is expected that multiple indexes may need to be queried to assemble a full hierarchy in a complex multi-jar environment (e.g. an application server).
Thread-Safety
This class is immutable and can be shared between threads without safe publication.- Author:
- Jason T. Greene
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classProvides information on the enclosing method or constructor for a local or anonymous class, if available.static enumDescribes the form of nesting used by a classNested classes/interfaces inherited from interface org.jboss.jandex.AnnotationTarget
AnnotationTarget.Kind -
Method Summary
Modifier and TypeMethodDescriptionfinal AnnotationInstanceannotation(DotName name) Returns the annotation instance with given name declared on this class, any of its members, or any type within the signature of the class or its members.final List<AnnotationInstance>Returns the annotation instances declared on this class, any of its members, or any type within the signature of the class or its members.final List<AnnotationInstance>annotations(DotName name) Returns the annotation instances with given name declared on this class, any of its members, or any type within the signature of the class or its members.final Map<DotName,List<AnnotationInstance>> final Map<DotName,List<AnnotationInstance>> Returns a map indexed by annotation name, with a value list of annotation instances.final List<AnnotationInstance>annotationsWithRepeatable(DotName name, IndexView index) Returns the annotation instances with given name declared on this class, any of its members, or any type within the signature of the class or its members.asClass()Casts and returns this target as aClassInfoif it is of kindCLASSasField()Casts and returns this target as aFieldInfoif it is of kindFIELDasMethod()Casts and returns this target as aMethodInfoif it is of kindMETHODCasts and returns this target as aMethodParameterInfoif it is of kindMETHOD_PARAMETERCasts and returns this target as aRecordComponentInfoif it is of kindRECORD_COMPONENTasType()Casts and returns this target as aTypeTargetif it is of kindTYPEfinal AnnotationInstanceclassAnnotation(DotName name) Deprecated.final Collection<AnnotationInstance>Deprecated.final List<AnnotationInstance>classAnnotationsWithRepeatable(DotName name, IndexView index) Deprecated.final List<MethodInfo>Returns a list of all constructors declared in this class (which have the special name<init>).static ClassInfocreate(DotName name, DotName superName, short flags, DotName[] interfaces, Map<DotName, List<AnnotationInstance>> annotations, boolean hasNoArgsConstructor) Deprecated.final AnnotationInstancedeclaredAnnotation(DotName name) Returns the annotation instance with given name declared on this class.final List<AnnotationInstance>Returns the annotation instances declared on this class.final List<AnnotationInstance>declaredAnnotationsWithRepeatable(DotName name, IndexView index) Returns the annotation instances with given name declared on this class.Returns the enclosing class if this is a member class, ornullif this is a top-level, local or anonymous class.Returns the enclosing method of this class if it is a local or anonymous class declared within the body of a method or constructor.Returns a list of enum constants declared by this enum class, represented asFieldInfo.final FieldInfoRetrieves a field by the given name.fields()Returns a list of all available fields.final MethodInfofirstMethod(String name) Retrieves the "first" occurrence of a method by the given name.final shortflags()Returns the access flags for this class.final booleanhasAnnotation(DotName name) Returns whether an annotation instance with given name is declared on this class, any of its members, or any type within the signature of the class or its members.final booleanhasDeclaredAnnotation(DotName name) Returns whether an annotation instance with given name is declared on this class.final booleanReturns whether this class declares a zero-parameter constructor.Returns a list of names for all interfaces this class implements.final DotName[]Deprecated.Returns the list of types in theimplementsclause of this class.final booleanfinal booleanisEnum()final booleanfinal booleanisModule()final booleanisRecord()final booleanfinal AnnotationTarget.Kindkind()Returns the kind of object this target represents.Returns a set of names of member classes declared in this class.final MethodInfoRetrieves a method based on its signature, which includes a method name and an parameter type list.final List<MethodInfo>methods()Returns a list of all methods declared in this class.module()Returns the module information from this class if it is a module descriptor, i.e.final DotNamename()Returns the name of the classReturns the nesting type of this class, which could either be a standard top level class, a member class (NestingType.INNER), an anonymous class, or a local class.final RecordComponentInforecordComponent(String name) Retrieves a record component by the given name.final List<RecordComponentInfo>Returns a list of all record components declared by this class.Returns the source declared name of this class if it is a top-level class, member class or a local class.final TypeReturns a super type represented by the extends clause of this class.final DotNameReturns the name of the super class declared by the extends clause of this class.toString()final List<TypeVariable>Returns the generic type parameters of this class, if any.Returns a list of all fields declared in this class, in the declaration order.final List<MethodInfo>Returns a list of all methods declared in this class, in the declaration order.final List<RecordComponentInfo>Returns a list of all record components declared in this class, in the declaration order.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.jboss.jandex.AnnotationTarget
annotation, annotation, annotations, annotations, annotationsWithRepeatable, annotationsWithRepeatable, declaredAnnotation, declaredAnnotation, declaredAnnotationsWithRepeatable, declaredAnnotationsWithRepeatable, hasAnnotation, hasAnnotation, hasDeclaredAnnotation, hasDeclaredAnnotation
-
Method Details
-
create
@Deprecated public static ClassInfo create(DotName name, DotName superName, short flags, DotName[] interfaces, Map<DotName, List<AnnotationInstance>> annotations, boolean hasNoArgsConstructor) Deprecated.Constructs a "mock" ClassInfo using the passed values. All passed values MUST NOT BE MODIFIED AFTER THIS CALL. Otherwise the resulting object would not conform to the contract outlined above.- Parameters:
name- the name of this classsuperName- the name of the parent classflags- the class attributesinterfaces- the interfaces this class implementsannotations- the annotations on this classhasNoArgsConstructor- whether this class has a no arg constructor- Returns:
- a new mock class representation
-
kind
Description copied from interface:AnnotationTargetReturns the kind of object this target represents.- Specified by:
kindin interfaceAnnotationTarget- Returns:
- the target kind.
-
toString
-
name
Returns the name of the class- Returns:
- the name of the class
-
flags
public final short flags()Returns the access flags for this class. The standardModifiercan be used to decode the value.- Returns:
- the access flags
-
isSynthetic
public final boolean isSynthetic()- Returns:
trueif this class is a synthetic class
-
isInterface
public final boolean isInterface()- Returns:
trueif this class object represents an interface type
-
isEnum
public final boolean isEnum()- Returns:
trueif this class object represents an enum type
-
isAnnotation
public final boolean isAnnotation()- Returns:
trueif this class object represents an annotation type
-
isRecord
public final boolean isRecord()- Returns:
trueif this class object represents a record type
-
isModule
public final boolean isModule()- Returns:
trueif this class object represents a Java module descriptor
-
superName
Returns the name of the super class declared by the extends clause of this class. This information is also available from thesuperClassTypemethod. For all classes, with the one exception ofjava.lang.Object, which is the one class in the Java language without a super-type, this method will always return a non-null value.- Returns:
- the name of the super class of this class, or null if this class is
java.lang.Object
-
interfaces
Deprecated.Returns an array of interface names implemented by this class. Every call to this method performs a defensive copy, sointerfaceNames()should be used instead.- Returns:
- an array of interface names implemented by this class
-
hasAnnotation
Returns whether an annotation instance with given name is declared on this class, any of its members, or any type within the signature of the class or its members.- Specified by:
hasAnnotationin interfaceAnnotationTarget- Parameters:
name- name of the annotation type to look for, must not benull- Returns:
trueif the annotation is present,falseotherwise- Since:
- 3.0
- See Also:
-
annotation
Returns the annotation instance with given name declared on this class, any of its members, or any type within the signature of the class or its members. Thetarget()method of the returned annotation instance may be used to determine the exact location of the annotation instance.The following is a non-exhaustive list of examples of annotations returned by this method:
@MyClassAnnotation public class Foo<@MyTypeAnnotation T> { @MyFieldAnnotation public String foo; public List<@MyTypeAnnotation String> bar; @MyMethodAnnotation public void foo() {...} public void foo(@MyParamAnnotation int param) {...} public void foo(List<@MyTypeAnnotation String> list) {...} public <@MyTypeAnnotation T> void foo(T t) {...} }In case an annotation with given name occurs more than once, the result of this method is not deterministic. For such situations,
annotations(DotName)is preferable.- Specified by:
annotationin interfaceAnnotationTarget- Parameters:
name- name of the annotation type to look for, must not benull- Returns:
- the annotation instance, or
nullif not found - Since:
- 3.0
- See Also:
-
annotations
Returns the annotation instances with given name declared on this class, any of its members, or any type within the signature of the class or its members. Thetarget()method of the returned annotation instances may be used to determine the exact location of the respective annotation instance.The following is a non-exhaustive list of examples of annotations returned by this method:
@MyClassAnnotation public class Foo<@MyTypeAnnotation T> { @MyFieldAnnotation public String foo; public List<@MyTypeAnnotation String> bar; @MyMethodAnnotation public void foo() {...} public void foo(@MyParamAnnotation int param) {...} public void foo(List<@MyTypeAnnotation String> list) {...} public <@MyTypeAnnotation T> void foo(T t) {...} }- Specified by:
annotationsin interfaceAnnotationTarget- Parameters:
name- name of the annotation type, must not benull- Returns:
- immutable list of annotation instances, never
null - Since:
- 3.0
- See Also:
-
annotationsWithRepeatable
Returns the annotation instances with given name declared on this class, any of its members, or any type within the signature of the class or its members. Thetarget()method of the returned annotation instances may be used to determine the exact location of the respective annotation instance.If the specified annotation is repeatable, the result also contains all values from the container annotation instance. In this case, the
AnnotationInstance.target()returns the target of the container annotation instance.- Specified by:
annotationsWithRepeatablein interfaceAnnotationTarget- Parameters:
name- name of the annotation type, must not benullindex- index used to obtain the annotation type, must not benull- Returns:
- immutable list of annotation instances, never
null - Throws:
IllegalArgumentException- if the index isnull, if the index does not contain the annotation type or ifnamedoes not identify an annotation type- Since:
- 3.0
- See Also:
-
annotations
Returns the annotation instances declared on this class, any of its members, or any type within the signature of the class or its members. Thetarget()method of the returned annotation instances may be used to determine the exact location of the respective annotation instance.The following is a non-exhaustive list of examples of annotations returned by this method:
@MyClassAnnotation public class Foo<@MyTypeAnnotation T> { @MyFieldAnnotation public String foo; public List<@MyTypeAnnotation String> bar; @MyMethodAnnotation public void foo() {...} public void foo(@MyParamAnnotation int param) {...} public void foo(List<@MyTypeAnnotation String> list) {...} public <@MyTypeAnnotation T> void foo(T t) {...} }- Specified by:
annotationsin interfaceAnnotationTarget- Returns:
- immutable list of annotation instances, never
null - Since:
- 3.0
-
hasDeclaredAnnotation
Returns whether an annotation instance with given name is declared on this class.Unlike
hasAnnotation(DotName), this method ignores annotations declared on the class members and types within the signature of the class and its members.- Specified by:
hasDeclaredAnnotationin interfaceAnnotationTarget- Parameters:
name- name of the annotation type to look for, must not benull- Returns:
trueif the annotation is present,falseotherwise- Since:
- 3.0
- See Also:
-
declaredAnnotation
Returns the annotation instance with given name declared on this class.Unlike
annotation(DotName), this method doesn't return annotations declared on the class members and types within the signature of the class and its members.- Specified by:
declaredAnnotationin interfaceAnnotationTarget- Parameters:
name- name of the annotation type to look for, must not benull- Returns:
- the annotation instance, or
nullif not found - Since:
- 3.0
- See Also:
-
declaredAnnotationsWithRepeatable
public final List<AnnotationInstance> declaredAnnotationsWithRepeatable(DotName name, IndexView index) Returns the annotation instances with given name declared on this class.If the specified annotation is repeatable, the result also contains all values from the container annotation instance. In this case, the
AnnotationInstance.target()returns the target of the container annotation instance.Unlike
annotationsWithRepeatable(DotName, IndexView), this method doesn't return annotations declared on the class members and types within the signature of the class and its members.- Specified by:
declaredAnnotationsWithRepeatablein interfaceAnnotationTarget- Parameters:
name- name of the annotation type, must not benullindex- index used to obtain the annotation type, must not benull- Returns:
- immutable list of annotation instances, never
null - Throws:
IllegalArgumentException- if the index isnull, if the index does not contain the annotation type or ifnamedoes not identify an annotation type- Since:
- 3.0
- See Also:
-
declaredAnnotations
Returns the annotation instances declared on this class.Unlike
annotations(), this method doesn't return annotations the class members and types within the signature of the class and its members.- Specified by:
declaredAnnotationsin interfaceAnnotationTarget- Returns:
- immutable list of annotation instances, never
null - Since:
- 3.0
- See Also:
-
annotationsMap
Returns a map indexed by annotation name, with a value list of annotation instances. The annotation instances in this map correspond to both annotations on the class, and every nested element of the class (fields, types, methods, etc).The target of the annotation instance can be used to determine the location of the annotation usage.
- Returns:
- immutable map of annotations specified on this class and its elements, never
null
-
annotations$$bridge
-
classAnnotations
Deprecated.Returns a list of all annotations directly declared on this class.- Returns:
- immutable list of annotations declared on this class
-
classAnnotation
Deprecated.Returns the annotation with the specified name directly declared on this class.- Parameters:
name- the annotation name to look for- Returns:
- the declared annotation or null if not found
-
classAnnotationsWithRepeatable
@Deprecated public final List<AnnotationInstance> classAnnotationsWithRepeatable(DotName name, IndexView index) Deprecated.Retrieves annotation instances declared on this class, by the name of the annotation. If the specified annotation is repeatable (JLS 9.6), then attempt to result contains the values from the containing annotation.- Parameters:
name- the name of the annotationindex- the index used to obtain the annotation class- Returns:
- immutable list of annotation instances declared on this class, or an empty list if none
-
methods
Returns a list of all methods declared in this class. This includes constructors and static initializer blocks which have the special names of<init>and<clinit>, respectively. It does not, however, include inherited methods. These must be discovered by traversing the class hierarchy.This list may be empty, but is never
null.- Returns:
- the list of methods declared in this class
-
unsortedMethods
Returns a list of all methods declared in this class, in the declaration order. Seemethods()for more information.Note that for the result to actually be in declaration order, the index must be produced by at least Jandex 2.4. Previous Jandex versions do not store method positions. At most 256 methods may be present; if there's more, order is undefined. This also assumes that the bytecode order corresponds to declaration order, which is not guaranteed, but practically always holds.
- Returns:
- a list of methods
- Since:
- 2.4
-
constructors
Returns a list of all constructors declared in this class (which have the special name<init>). It does not include inherited constructors. These must be discovered by traversing the class hierarchy.This list may be empty, but is never
null.- Returns:
- the list of constructors declared in this class
-
method
Retrieves a method based on its signature, which includes a method name and an parameter type list. The parameter type list is compared based on the underlying raw types. As an example, a generic type parameterTis considered equal tojava.lang.Object, since the raw form of a type variable is its upper bound.Eligible methods include constructors and static initializer blocks which have the special names of
<init>and<clinit>, respectively. This does not, however, include inherited methods. These must be discovered by traversing the class hierarchy.- Parameters:
name- the name of the method to findparameters- the type parameters of the method- Returns:
- the located method or null if not found
-
firstMethod
Retrieves the "first" occurrence of a method by the given name. Note that the order of methods is not defined, and may change in the future. Therefore, this method should not be used when overloading is possible. It's merely intended to provide a handy shortcut for throw away or test code.- Parameters:
name- the name of the method- Returns:
- the first discovered method matching this name, or null if no match is found
-
field
Retrieves a field by the given name. Only fields declared in this class are available. Locating inherited fields requires traversing the class hierarchy.- Parameters:
name- the name of the field- Returns:
- the field
-
fields
Returns a list of all available fields. Only fields declared in this class are available. Locating inherited fields requires traversing the class hierarchy. This list may be empty, but never null.- Returns:
- a list of fields
-
unsortedFields
Returns a list of all fields declared in this class, in the declaration order. Seefields()for more information.Note that for the result to actually be in declaration order, the index must be produced by at least Jandex 2.4. Previous Jandex versions do not store field positions. At most 256 fields may be present; if there's more, order is undefined. This also assumes that the bytecode order corresponds to declaration order, which is not guaranteed, but practically always holds.
- Returns:
- a list of fields
- Since:
- 2.4
-
recordComponent
Retrieves a record component by the given name.- Parameters:
name- the name of the record component- Returns:
- the record component
-
recordComponents
Returns a list of all record components declared by this class. This list may be empty, but never null.- Returns:
- a list of record components
-
unsortedRecordComponents
Returns a list of all record components declared in this class, in the declaration order. SeerecordComponents()for more information.Note that for the result to actually be in declaration order, the index must be produced by at least Jandex 2.4. Previous Jandex versions do not store record component positions. At most 256 record components may be present; if there's more, order is undefined. This also assumes that the bytecode order corresponds to declaration order, which is not guaranteed, but practically always holds.
- Returns:
- a list of record components
- Since:
- 2.4
-
enumConstants
Returns a list of enum constants declared by this enum class, represented asFieldInfo. Enum constants are returned in declaration order.If this class is not an enum, returns an empty list.
Note that for the result to actually be in declaration order, the index must be produced by at least Jandex 2.4. Previous Jandex versions do not store field positions. At most 256 fields may be present in the class; if there's more, order is undefined. This also assumes that the bytecode order corresponds to declaration order, which is not guaranteed, but practically always holds.
- Returns:
- immutable list of enum constants, never
null - Since:
- 3.0.1
-
interfaceNames
Returns a list of names for all interfaces this class implements. This list may be empty, but never null.Note that this information is also available on the
Typeinstances returned byinterfaceTypes- Returns:
- immutable list of names of interfaces implemented by this class
-
interfaceTypes
Returns the list of types in theimplementsclause of this class. These types may be generic types. This list may be empty, but is nevernull.- Returns:
- immutable list of types declared in the
implementsclause of this class
-
superClassType
Returns a super type represented by the extends clause of this class. This type might be a generic type.- Returns:
- the super class type definition in the extends clause
-
typeParameters
Returns the generic type parameters of this class, if any. These will be returned as resolved type variables, so if a parameter has a bound on another parameter, that information will be available.- Returns:
- immutable list of generic type parameters of this class
-
hasNoArgsConstructor
public final boolean hasNoArgsConstructor()Returns whether this class declares a zero-parameter constructor. This is determined from constructor descriptors, so mandated and synthetic parameters are also taken into account. In other words, for Java classes (other JVM languages may differ), this method never returnstruefor inner classes (that is, non-static member classes, local classes and anonymous classes). In such case, a constructor may exist amongmethods()that has noMethodInfo.parameters(), butMethodInfo.descriptorParameterTypes()would reveal that some implicitly declared (aka mandated) or synthetic parameters exist.This information is available in indexes produced by Jandex 1.2.0 and later.
- Returns:
trueif this class has a zero-parameter constructor,falseif it does not- Since:
- 1.2.0
-
nestingType
Returns the nesting type of this class, which could either be a standard top level class, a member class (NestingType.INNER), an anonymous class, or a local class.For historical reasons, static member classes are also returned as
INNER. You can differentiate between a non-static member class (inner class) and a static member class by callingModifier.isStatic(int)on the return value offlags().- Returns:
- the nesting type of this class
-
simpleName
Returns the source declared name of this class if it is a top-level class, member class or a local class. Otherwise returnsnull.- Returns:
- the simple name of a top-level, member or local class, or
nullif this is an anonymous class
-
enclosingClass
Returns the enclosing class if this is a member class, ornullif this is a top-level, local or anonymous class.- Returns:
- the enclosing class if this class is a member class
-
enclosingMethod
Returns the enclosing method of this class if it is a local or anonymous class declared within the body of a method or constructor. Returnsnullif this class is a top level or a member class or if the local or anonymous class is declared within a class or instance initializer.- Returns:
- the enclosing method/constructor, if this class is a local or anonymous class
declared within a method or constructor, otherwise
null
-
memberClasses
Returns a set of names of member classes declared in this class. Member classes are classes directly enclosed in another class. That is, local classes and anonymous classes are not member classes.Member classes of member classes are not included in the returned set.
Never returns
null, but may return an empty set.- Returns:
- immutable set of names of this class's member classes, never
null
-
module
Returns the module information from this class if it is a module descriptor, i.e.module-info.- Returns:
- the module descriptor for module classes, otherwise
null
-
asClass
Description copied from interface:AnnotationTargetCasts and returns this target as aClassInfoif it is of kindCLASS- Specified by:
asClassin interfaceAnnotationTarget- Returns:
- this instance cast to a class
-
asField
Description copied from interface:AnnotationTargetCasts and returns this target as aFieldInfoif it is of kindFIELD- Specified by:
asFieldin interfaceAnnotationTarget- Returns:
- this instance cast to a field
-
asMethod
Description copied from interface:AnnotationTargetCasts and returns this target as aMethodInfoif it is of kindMETHOD- Specified by:
asMethodin interfaceAnnotationTarget- Returns:
- this instance cast to a method
-
asMethodParameter
Description copied from interface:AnnotationTargetCasts and returns this target as aMethodParameterInfoif it is of kindMETHOD_PARAMETER- Specified by:
asMethodParameterin interfaceAnnotationTarget- Returns:
- this instance cast to a method parameter
-
asType
Description copied from interface:AnnotationTargetCasts and returns this target as aTypeTargetif it is of kindTYPE- Specified by:
asTypein interfaceAnnotationTarget- Returns:
- this instance cast to a type target
-
asRecordComponent
Description copied from interface:AnnotationTargetCasts and returns this target as aRecordComponentInfoif it is of kindRECORD_COMPONENT- Specified by:
asRecordComponentin interfaceAnnotationTarget- Returns:
- this instance cast to a record component
-
declaredAnnotation(DotName)