Package org.jboss.jandex
Class Type
- java.lang.Object
-
- org.jboss.jandex.Type
-
- Direct Known Subclasses:
ArrayType
,ClassType
,ParameterizedType
,PrimitiveType
,TypeVariable
,UnresolvedTypeVariable
,VoidType
,WildcardType
public abstract class Type extends java.lang.Object
Represents a Java type declaration usage that is specified on methods, fields, classes, annotations, or other types. A type can be any class based type (interface, class, annotation), any primitive, any array, any generic type declaration, or void.A type usage may have annotations associated with its declaration. A type is equal to another type if, and only if, it represents the same exact definition including the annotations specific to its usage.
To reduce memory overhead, type instances are often shared between their enclosing classes.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Type.Kind
Represents a "kind" of Type.
-
Field Summary
Fields Modifier and Type Field Description private AnnotationInstance[]
annotations
private static AnnotationInstance[]
EMPTY_ANNOTATIONS
static Type[]
EMPTY_ARRAY
private DotName
name
-
Constructor Summary
Constructors Constructor Description Type(DotName name, AnnotationInstance[] annotations)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description (package private) Type
addAnnotation(AnnotationInstance annotation)
AnnotationInstance
annotation(DotName name)
(package private) AnnotationInstance[]
annotationArray()
java.util.List<AnnotationInstance>
annotations()
Returns the list of annotations declared on this type's usage.(package private) void
appendAnnotations(java.lang.StringBuilder builder)
ArrayType
asArrayType()
Casts this type to anArrayType
and returns it if the kind isType.Kind.ARRAY
Throws an exception otherwise.ClassType
asClassType()
Casts this type to aClassType
and returns it if the kind isType.Kind.CLASS
Throws an exception otherwise.ParameterizedType
asParameterizedType()
Casts this type to aParameterizedType
and returns it if the kind isType.Kind.PARAMETERIZED_TYPE
Throws an exception otherwise.PrimitiveType
asPrimitiveType()
Casts this type to aPrimitiveType
and returns it if the kind isType.Kind.PRIMITIVE
Throws an exception otherwise.TypeVariable
asTypeVariable()
Casts this type to aParameterizedType
and returns it if the kind isType.Kind.TYPE_VARIABLE
Throws an exception otherwise.UnresolvedTypeVariable
asUnresolvedTypeVariable()
Casts this type to anUnresolvedTypeVariable
and returns it if the kind isType.Kind.UNRESOLVED_TYPE_VARIABLE
Throws an exception otherwise.VoidType
asVoidType()
Casts this type to aVoidType
and returns it if the kind isType.Kind.VOID
Throws an exception otherwise.WildcardType
asWildcardType()
Casts this type to aWildcardType
and returns it if the kind isType.Kind.WILDCARD_TYPE
Throws an exception otherwise.(package private) abstract Type
copyType(AnnotationInstance[] newAnnotations)
static Type
create(DotName name, Type.Kind kind)
Creates a type instance of the specified kind.boolean
equals(java.lang.Object o)
Compares this Type with another type, and returns true if they are equivalent.boolean
hasAnnotation(DotName name)
int
hashCode()
Computes a hash code representing this type.abstract Type.Kind
kind()
Returns the kind of Type this is.DotName
name()
Returns the raw name of this type.java.lang.String
toString()
Returns a string representation for this type.(package private) java.lang.String
toString(boolean simple)
-
-
-
Field Detail
-
EMPTY_ARRAY
public static final Type[] EMPTY_ARRAY
-
EMPTY_ANNOTATIONS
private static final AnnotationInstance[] EMPTY_ANNOTATIONS
-
name
private final DotName name
-
annotations
private final AnnotationInstance[] annotations
-
-
Constructor Detail
-
Type
Type(DotName name, AnnotationInstance[] annotations)
-
-
Method Detail
-
create
public static Type create(DotName name, Type.Kind kind)
Creates a type instance of the specified kind. Types of kindCLASS
, directly use the specified name. Types of kindARRAY
parse the name in the Java reflection format (Java descriptor format changing / to '.', e.g. "[[[[Ljava.lang.String;"). Types of kind PRIMITIVE parsed using the primitive descriptor format (e.g. "I" for int). Types of kind VOID ignore the specified name, and return a void type. All other types will throw an exception.- Parameters:
name
- the name to use or parsekind
- the kind of type to create- Returns:
- the type
- Throws:
java.lang.IllegalArgumentException
- if the kind is no supported
-
name
public DotName name()
Returns the raw name of this type. Primitives and void are returned as the Java reserved word (void, boolean, byte, short, char, int, long, float, double). Arrays are returned using the Java reflection array syntax (e.g. "[[[Ljava.lang.String;") Classes are returned as a normalDotName
.Generic values are returned as the underlying raw value. For example, a wildcard such as
? extends Number
, has a raw type ofNumber
- Returns:
- the name of this type
-
kind
public abstract Type.Kind kind()
Returns the kind of Type this is.- Returns:
- the kind
-
asClassType
public ClassType asClassType()
Casts this type to aClassType
and returns it if the kind isType.Kind.CLASS
Throws an exception otherwise.- Returns:
- a
ClassType
- Throws:
java.lang.IllegalArgumentException
- if not a class- Since:
- 2.0
-
asParameterizedType
public ParameterizedType asParameterizedType()
Casts this type to aParameterizedType
and returns it if the kind isType.Kind.PARAMETERIZED_TYPE
Throws an exception otherwise.- Returns:
- a
ClassType
- Throws:
java.lang.IllegalArgumentException
- if not a parameterized type- Since:
- 2.0
-
asTypeVariable
public TypeVariable asTypeVariable()
Casts this type to aParameterizedType
and returns it if the kind isType.Kind.TYPE_VARIABLE
Throws an exception otherwise.- Returns:
- a
ClassType
- Throws:
java.lang.IllegalArgumentException
- if not a type variable- Since:
- 2.0
-
asArrayType
public ArrayType asArrayType()
Casts this type to anArrayType
and returns it if the kind isType.Kind.ARRAY
Throws an exception otherwise.- Returns:
- a
ClassType
- Throws:
java.lang.IllegalArgumentException
- if not an array type- Since:
- 2.0
-
asWildcardType
public WildcardType asWildcardType()
Casts this type to aWildcardType
and returns it if the kind isType.Kind.WILDCARD_TYPE
Throws an exception otherwise.- Returns:
- a
ClassType
- Throws:
java.lang.IllegalArgumentException
- if not a wildcard type- Since:
- 2.0
-
asUnresolvedTypeVariable
public UnresolvedTypeVariable asUnresolvedTypeVariable()
Casts this type to anUnresolvedTypeVariable
and returns it if the kind isType.Kind.UNRESOLVED_TYPE_VARIABLE
Throws an exception otherwise.- Returns:
- a
ClassType
- Throws:
java.lang.IllegalArgumentException
- if not an unresolved type- Since:
- 2.0
-
asPrimitiveType
public PrimitiveType asPrimitiveType()
Casts this type to aPrimitiveType
and returns it if the kind isType.Kind.PRIMITIVE
Throws an exception otherwise.- Returns:
- a
ClassType
- Throws:
java.lang.IllegalArgumentException
- if not a primitive type- Since:
- 2.0
-
asVoidType
public VoidType asVoidType()
Casts this type to aVoidType
and returns it if the kind isType.Kind.VOID
Throws an exception otherwise.- Returns:
- a
ClassType
- Throws:
java.lang.IllegalArgumentException
- if not a void type- Since:
- 2.0
-
toString
public java.lang.String toString()
Returns a string representation for this type. It is similar, yet not equivalent to a Java source code representation.- Overrides:
toString
in classjava.lang.Object
- Returns:
- the string representation.
-
toString
java.lang.String toString(boolean simple)
-
appendAnnotations
void appendAnnotations(java.lang.StringBuilder builder)
-
equals
public boolean equals(java.lang.Object o)
Compares this Type with another type, and returns true if they are equivalent. A type is equivalent to another type if it is the same kind, and all of its fields are equal. This includes annotations, which must be equal as well.- Overrides:
equals
in classjava.lang.Object
- Parameters:
o
- the type to compare to- Returns:
- true if equal
- See Also:
Object.equals(Object)
-
annotations
public java.util.List<AnnotationInstance> annotations()
Returns the list of annotations declared on this type's usage. In order to allow for type reuse, the annotation instances returned by this method will have a null annotation target value. However, this information is not useful, because if it is accessed from this method, the target is this type.- Returns:
- a list of annotation instances declared on the usage this type represents
- Since:
- 2.0
-
annotationArray
AnnotationInstance[] annotationArray()
-
annotation
public final AnnotationInstance annotation(DotName name)
-
hasAnnotation
public final boolean hasAnnotation(DotName name)
-
addAnnotation
Type addAnnotation(AnnotationInstance annotation)
-
copyType
abstract Type copyType(AnnotationInstance[] newAnnotations)
-
hashCode
public int hashCode()
Computes a hash code representing this type.- Overrides:
hashCode
in classjava.lang.Object
- Returns:
- the hash code
-
-