Class QualifiedType


  • 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:
    SimpleType, NameQualifiedType
    Restriction:
    This class is not intended to be instantiated by clients.
    • Field Detail

      • QUALIFIER_PROPERTY

        public static final ChildPropertyDescriptor QUALIFIER_PROPERTY
        The "qualifier" structural property of this node type (child type: Type).
      • ANNOTATIONS_PROPERTY

        public static final ChildListPropertyDescriptor ANNOTATIONS_PROPERTY
        The "annotations" structural property of this node type (element type: Annotation).
        Since:
        3.10
    • Method Detail

      • propertyDescriptors

        public static List propertyDescriptors​(int apiLevel)
        Returns a list of structural property descriptors for this node type. Clients must not modify the result.
        Parameters:
        apiLevel - the API level; one of the AST.JLS* constants
        Returns:
        a list of property descriptors (element type: StructuralPropertyDescriptor)
      • getQualifier

        public Type getQualifier()
        Returns the qualifier of this qualified type.
        Returns:
        the qualifier of this qualified type
      • setQualifier

        public void setQualifier​(Type type)
        Sets the qualifier of this qualified type to the given type.
        Parameters:
        type - the new qualifier of this qualified type
        Throws:
        IllegalArgumentException - if:
        • the node belongs to a different AST
        • the node already has a parent
      • getName

        public SimpleName getName()
        Returns the name part of this qualified type.
        Returns:
        the name being qualified
      • setName

        public void setName​(SimpleName name)
        Sets the name part of this qualified type to the given simple name.
        Parameters:
        name - the identifier of this qualified name
        Throws:
        IllegalArgumentException - if:
        • the node belongs to a different AST
        • the node already has a parent