Class QualifiedType

java.lang.Object

public class QualifiedType extends AnnotatableType
Type node for a qualified type (added in JLS3 API).
 QualifiedType:
    Type . { Annotation } SimpleName
 

Not all node arrangements will represent legal Java constructs. In particular, it is nonsense if the type is an array type or primitive type. The normal use is when the type is a ParameterizedType, an annotated QualifiedType, or a NameQualifiedType.

A "."-separated type like "A.B" can be represented in three ways:

 1.    SimpleType       | 2. NameQualifiedType   | 3.  QualifiedType
     QualifiedName      | SimpleName  SimpleName | SimpleType  SimpleName
 SimpleName  SimpleName |     "A"         "B"    | SimpleName      "B"
     "A"         "B"    |                        |     "A"
 

The ASTParser creates the SimpleType form (wrapping a name) if possible. The SimpleType form doesn't support any embedded Annotations nor ParameterizedTypes. The NameQualifiedType form is only available since JLS8 and the QualifiedType form only since JLS3. The NameQualifiedType and QualifiedType forms allow Annotations on the last SimpleName. The QualifiedType form cannot be used if the qualifier represents a package name.

The part before the last "." is called the qualifier of a type. If the name after the last "." has annotations or if the qualifier is not a (possibly qualified) name, then the ASTParser creates either a NameQualifiedType or a QualifiedType:

  • If the qualifier is a (possibly qualified) name, then a NameQualifiedType is created.
  • Otherwise, a QualifiedType is created and its qualifier is built using the same rules.
Since:
3.1
See Also: