Class Type

  • Direct Known Subclasses:
    AnnotatableType, ArrayType, IntersectionType, ParameterizedType, UnionType

    public abstract class Type
    extends ASTNode
    Abstract base class of all type reference AST node types. A type node represents a reference to a primitive type (including void), to an array type, or to a simple named type (or type variable), to a qualified type, to a parameterized type, to a union type, to an intersection type, or to a wildcard type. Note that not all of these are meaningful in all contexts; for example, a wildcard type is only meaningful in the type argument position of a parameterized type. UnionType got introduced in JLS4 to support common catch blocks for disjunctive types. For JLS8, optional annotations indicated by {Annotation} got added.
     Type:
        AnnotatableType:
           PrimitiveType
           SimpleType
           QualifiedType
           NameQualifiedType
           WildcardType
        ArrayType
        ParameterizedType
        UnionType
        IntersectionType
        
     PrimitiveType:
        { Annotation } byte
        { Annotation } short
        { Annotation } char
        { Annotation } int
        { Annotation } long
        { Annotation } float
        { Annotation } double
        { Annotation } boolean
        { Annotation } void
     ArrayType:
        Type Dimension { Dimension }
     SimpleType:
        { Annotation } TypeName
     QualifiedType:
        Type . {Annotation} SimpleName
     NameQualifiedType:
        Name . { Annotation } SimpleName
     WildcardType:
        { Annotation } ? [ ( extends | super) Type ]
     ParameterizedType:
        Type < Type { , Type } >
     UnionType:
        Type | Type { | Type }
     IntersectionType:
        Type & Type { & Type }
     
    Since:
    2.0
    • Method Detail

      • isPrimitiveType

        public final boolean isPrimitiveType()
        Returns whether this type is a primitive type (PrimitiveType).
        Returns:
        true if this is a primitive type, and false otherwise
      • isSimpleType

        public final boolean isSimpleType()
        Returns whether this type is a simple type (SimpleType).
        Returns:
        true if this is a simple type, and false otherwise
      • isArrayType

        public final boolean isArrayType()
        Returns whether this type is an array type (ArrayType).
        Returns:
        true if this is an array type, and false otherwise
      • isNameQualifiedType

        public final boolean isNameQualifiedType()
        Returns whether this type is a name qualified type (NameQualifiedType).
        Returns:
        true if this is a name qualified type, and false otherwise
        Since:
        3.10
      • isParameterizedType

        public final boolean isParameterizedType()
        Returns whether this type is a parameterized type (ParameterizedType).
        Returns:
        true if this is a parameterized type, and false otherwise
        Since:
        3.1
      • isQualifiedType

        public final boolean isQualifiedType()
        Returns whether this type is a qualified type (QualifiedType).

        Note that a type like "A.B" can be represented either of two ways:

        1. QualifiedType(SimpleType(SimpleName("A")),SimpleName("B"))
        2. SimpleType(QualifiedName(SimpleName("A"),SimpleName("B")))
        The first form is preferred when "A" is known to be a type. However, a parser cannot always determine this. Clients should be prepared to handle either rather than make assumptions. (Note also that the first form became possible as of JLS3; only the second form existed in the JLS2 API.)
        Returns:
        true if this is a qualified type, and false otherwise
        Since:
        3.1
      • isUnionType

        public final boolean isUnionType()
        Returns whether this type is a union type (UnionType).
        Returns:
        true if this is a union type, and false otherwise
        Since:
        3.7.1
      • isVar

        public boolean isVar()
        Returns whether this type is a var. The convenience method checks whether the type is so named.
        Returns:
        true if this is a var, and false otherwise
        Throws:
        UnsupportedOperationException - if this operation is used in an AST of level less than JLS10
        Since:
        3.14
      • isIntersectionType

        public final boolean isIntersectionType()
        Returns whether this type is an intersection type (IntersectionType).
        Returns:
        true if this is an intersection type, and false otherwise
        Since:
        3.10
      • isWildcardType

        public final boolean isWildcardType()
        Returns whether this type is a wildcard type (WildcardType).

        Note that a wildcard type is only meaningful as a type argument of a ParameterizedType node.

        Returns:
        true if this is a wildcard type, and false otherwise
        Since:
        3.1
      • isAnnotatable

        public boolean isAnnotatable()
        Returns whether this type can be annotated. All sub-classes of AnnotatableType can be annotated.
        Returns:
        true if this type is an instance of AnnotatableType, and false otherwise
        Since:
        3.10
      • resolveBinding

        public final ITypeBinding resolveBinding()
        Resolves and returns the binding for this type.

        Note that bindings are generally unavailable unless requested when the AST is being built.

        Returns:
        the type binding, or null if the binding cannot be resolved