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 {@link PrimitiveType}: { Annotation } byte { Annotation } short { Annotation } char { Annotation } int { Annotation } long { Annotation } float { Annotation } double { Annotation } boolean { Annotation } void {@link ArrayType}: Type Dimension { Dimension } {@link SimpleType}: { Annotation } TypeName {@link QualifiedType}: Type . {Annotation} SimpleName {@link NameQualifiedType}: Name . { Annotation } SimpleName {@link WildcardType}: { Annotation } ? [ ( extends | super) Type ] {@link ParameterizedType}: Type < Type { , Type } > {@link UnionType}: Type | Type { | Type } {@link IntersectionType}: Type & Type { & Type }
@since 2.0