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 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.
- Author:
- Jason T. Greene
-
-
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 static Type[]
EMPTY_ARRAY
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description AnnotationInstance
annotation(DotName name)
List<AnnotationInstance>
annotations()
Returns the list of annotations declared on this type's usage.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.static Type
create(DotName name, Type.Kind kind)
Creates a type instance of the specified kind.boolean
equals(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.String
toString()
Returns a string representation for this type.
-
-
-
Field Detail
-
EMPTY_ARRAY
public static final Type[] EMPTY_ARRAY
-
-
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:
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:
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:
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:
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:
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:
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:
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:
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:
IllegalArgumentException
- if not a void type- Since:
- 2.0
-
toString
public String toString()
Returns a string representation for this type. It is similar, yet not equivalent to a Java source code representation.
-
equals
public boolean equals(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 classObject
- Parameters:
o
- the type to compare to- Returns:
- true if equal
- See Also:
Object.equals(Object)
-
annotations
public 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
-
annotation
public final AnnotationInstance annotation(DotName name)
-
hasAnnotation
public final boolean hasAnnotation(DotName name)
-
-