Package org.eclipse.jdt.core.dom

## Class Type

- java.lang.Object
- - org.eclipse.jdt.core.dom.ASTNode
  - - org.eclipse.jdt.core.dom.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

### Field Summary

### Fields inherited from class org.eclipse.jdt.core.dom.ASTNode

`ANNOTATION_TYPE_DECLARATION, ANNOTATION_TYPE_MEMBER_DECLARATION, ANONYMOUS_CLASS_DECLARATION, ARRAY_ACCESS, ARRAY_CREATION, ARRAY_INITIALIZER, ARRAY_TYPE, ASSERT_STATEMENT, ASSIGNMENT, BLOCK, BLOCK_COMMENT, BOOLEAN_LITERAL, BREAK_STATEMENT, CASE_DEFAULT_EXPRESSION, CAST_EXPRESSION, CATCH_CLAUSE, CHARACTER_LITERAL, CLASS_INSTANCE_CREATION, COMPILATION_UNIT, CONDITIONAL_EXPRESSION, CONSTRUCTOR_INVOCATION, CONTINUE_STATEMENT, CREATION_REFERENCE, DIMENSION, DO_STATEMENT, EMPTY_STATEMENT, ENHANCED_FOR_STATEMENT, ENUM_CONSTANT_DECLARATION, ENUM_DECLARATION, EXPORTS_DIRECTIVE, EXPRESSION_METHOD_REFERENCE, EXPRESSION_STATEMENT, FIELD_ACCESS, FIELD_DECLARATION, FOR_STATEMENT, GUARDED_PATTERN, IF_STATEMENT, IMPORT_DECLARATION, INFIX_EXPRESSION, INITIALIZER, INSTANCEOF_EXPRESSION, INTERSECTION_TYPE, JAVADOC, LABELED_STATEMENT, LAMBDA_EXPRESSION, LINE_COMMENT, MALFORMED, MARKER_ANNOTATION, MEMBER_REF, MEMBER_VALUE_PAIR, METHOD_DECLARATION, METHOD_INVOCATION, METHOD_REF, METHOD_REF_PARAMETER, MODIFIER, MODULE_DECLARATION, MODULE_MODIFIER, MODULE_QUALIFIED_NAME, NAME_QUALIFIED_TYPE, NORMAL_ANNOTATION, NULL_LITERAL, NULL_PATTERN, NUMBER_LITERAL, OPENS_DIRECTIVE, ORIGINAL, PACKAGE_DECLARATION, PARAMETERIZED_TYPE, PARENTHESIZED_EXPRESSION, PATTERN_INSTANCEOF_EXPRESSION, POSTFIX_EXPRESSION, PREFIX_EXPRESSION, PRIMITIVE_TYPE, PROTECT, PROVIDES_DIRECTIVE, QUALIFIED_NAME, QUALIFIED_TYPE, RECORD_DECLARATION, RECOVERED, REQUIRES_DIRECTIVE, RETURN_STATEMENT, SIMPLE_NAME, SIMPLE_TYPE, SINGLE_MEMBER_ANNOTATION, SINGLE_VARIABLE_DECLARATION, STRING_LITERAL, SUPER_CONSTRUCTOR_INVOCATION, SUPER_FIELD_ACCESS, SUPER_METHOD_INVOCATION, SUPER_METHOD_REFERENCE, SWITCH_CASE, SWITCH_EXPRESSION, SWITCH_STATEMENT, SYNCHRONIZED_STATEMENT, TAG_ELEMENT, TEXT_BLOCK, TEXT_ELEMENT, THIS_EXPRESSION, THROW_STATEMENT, TRY_STATEMENT, TYPE_DECLARATION, TYPE_DECLARATION_STATEMENT, TYPE_LITERAL, TYPE_METHOD_REFERENCE, TYPE_PARAMETER, TYPE_PATTERN, UNION_TYPE, USES_DIRECTIVE, VARIABLE_DECLARATION_EXPRESSION, VARIABLE_DECLARATION_FRAGMENT, VARIABLE_DECLARATION_STATEMENT, WHILE_STATEMENT, WILDCARD_TYPE, YIELD_STATEMENT`

### Method Summary

All Methods Instance Methods Concrete Methods
`boolean` `isAnnotatable()` Returns whether this type can be annotated.
`boolean` `isArrayType()` Returns whether this type is an array type (`ArrayType`).
`boolean` `isIntersectionType()` Returns whether this type is an intersection type (`IntersectionType`).
`boolean` `isNameQualifiedType()` Returns whether this type is a name qualified type (`NameQualifiedType`).
`boolean` `isParameterizedType()` Returns whether this type is a parameterized type (`ParameterizedType`).
`boolean` `isPrimitiveType()` Returns whether this type is a primitive type (`PrimitiveType`).
`boolean` `isQualifiedType()` Returns whether this type is a qualified type (`QualifiedType`).
`boolean` `isSimpleType()` Returns whether this type is a simple type (`SimpleType`).
`boolean` `isUnionType()` Returns whether this type is a union type (`UnionType`).
`boolean` `isVar()` Returns whether this type is a var.
`boolean` `isWildcardType()` Returns whether this type is a wildcard type (`WildcardType`).
`ITypeBinding` `resolveBinding()` Resolves and returns the binding for this type.

### Methods inherited from class org.eclipse.jdt.core.dom.ASTNode

`accept, copySubtree, copySubtrees, delete, equals, getAST, getFlags, getLength, getLocationInParent, getNodeType, getParent, getProperty, getRoot, getStartPosition, getStructuralProperty, hashCode, nodeClassForType, properties, setFlags, setProperty, setSourceRange, setStructuralProperty, structuralPropertiesForType, subtreeBytes, subtreeMatch, toString`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### 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