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.

  • Field Details

  • Constructor Details

  • Method Details

    • create

      public static Type create(DotName name, Type.Kind kind)
      Creates a type instance of the specified kind. Types of kind CLASS, directly use the specified name. Types of kind ARRAY 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 parse
      kind - 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 normal DotName.

      Generic values are returned as the underlying raw value. For example, a wildcard such as ? extends Number, has a raw type of Number

      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 a ClassType and returns it if the kind is Type.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 a ParameterizedType and returns it if the kind is Type.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 a ParameterizedType and returns it if the kind is Type.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 an ArrayType and returns it if the kind is Type.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 a WildcardType and returns it if the kind is Type.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 an UnresolvedTypeVariable and returns it if the kind is Type.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 a PrimitiveType and returns it if the kind is Type.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 a VoidType and returns it if the kind is Type.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.
      Overrides:
      toString in class Object
      Returns:
      the string representation.
    • toString

      String toString(boolean simple)
    • appendAnnotations

      void appendAnnotations(StringBuilder builder)
    • 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 class Object
      Parameters:
      o - the type to compare to
      Returns:
      true if equal
      See Also:
    • 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
    • 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 class Object
      Returns:
      the hash code