Class AnnotatedTypeMirror.AnnotatedWildcardType

  • All Implemented Interfaces:
    org.plumelib.util.DeepCopyable<AnnotatedTypeMirror>
    Enclosing class:
    AnnotatedTypeMirror

    public static class AnnotatedTypeMirror.AnnotatedWildcardType
    extends AnnotatedTypeMirror
    Represents a wildcard type argument. Examples include:

    ? ? extends Number ? super T

    A wildcard may have its upper bound explicitly set by an extends clause, its lower bound explicitly set by a super clause, or neither (but not both).

    • Method Detail

      • removeAnnotation

        public boolean removeAnnotation​(javax.lang.model.element.AnnotationMirror a)
        Description copied from class: AnnotatedTypeMirror
        Removes a primary annotation from the type.
        Overrides:
        removeAnnotation in class AnnotatedTypeMirror
        Parameters:
        a - the annotation to remove
        Returns:
        true if the annotation was removed, false if the type's annotations were unchanged
      • getExtendsBound

        public AnnotatedTypeMirror getExtendsBound()
        Returns the upper bound of this wildcard. If no upper bound is explicitly declared, returns the upper bound of the type variable to which the wildcard is bound.
        Returns:
        the upper bound of this wildcard. If no upper bound is explicitly declared, returns the upper bound of the type variable to which the wildcard is bound.
      • getTypeVariable

        public javax.lang.model.type.TypeVariable getTypeVariable()
        Returns the type variable to which this wildcard is an argument. Used to initialize the upper bound of wildcards in raw types.
        Returns:
        the type variable to which this wildcard is an argument
      • accept

        public <R,​P> R accept​(AnnotatedTypeVisitor<R,​P> v,
                                    P p)
        Description copied from class: AnnotatedTypeMirror
        Applies a visitor to this type.
        Specified by:
        accept in class AnnotatedTypeMirror
        Type Parameters:
        R - the return type of the visitor's methods
        P - the type of the additional parameter to the visitor's methods
        Parameters:
        v - the visitor operating on this type
        p - additional parameter to the visitor
        Returns:
        a visitor-specified result
      • getUnderlyingType

        public javax.lang.model.type.WildcardType getUnderlyingType()
        Description copied from class: AnnotatedTypeMirror
        Returns the underlying unannotated Java type, which this wraps.
        Overrides:
        getUnderlyingType in class AnnotatedTypeMirror
        Returns:
        the underlying type
      • deepCopy

        public AnnotatedTypeMirror.AnnotatedWildcardType deepCopy​(boolean copyAnnotations)
        Description copied from class: AnnotatedTypeMirror
        Returns a deep copy of this type. A deep copy implies that each component type is copied recursively and the returned type refers to those copies in its component locations.

        Note: deepCopy provides two important properties in the returned copy:

        1. Structure preservation -- The exact structure of the original AnnotatedTypeMirror is preserved in the copy including all component types.
        2. Annotation preservation -- All of the annotations from the original AnnotatedTypeMirror and its components have been copied to the new type.
        If copyAnnotations is set to false, the second property, Annotation preservation, is removed. This is useful for cases in which the user may want to copy the structure of a type exactly but NOT its annotations.
        Specified by:
        deepCopy in class AnnotatedTypeMirror
        Returns:
        a deep copy
      • shallowCopy

        public AnnotatedTypeMirror.AnnotatedWildcardType shallowCopy​(boolean copyAnnotations)
        Description copied from class: AnnotatedTypeMirror
        Returns a shallow copy of this type. A shallow copy implies that each component type in the output copy refers to the same object as the object being copied.
        Specified by:
        shallowCopy in class AnnotatedTypeMirror
        Parameters:
        copyAnnotations - whether copy should have annotations, i.e. whether field annotations should be copied.
      • setUninferredTypeArgument

        public void setUninferredTypeArgument()
        Set that this wildcard is from an uninferred type argument. This method should only be used within the framework. Once issues that depend on this hack, in particular Issue 979, are fixed, this must be removed.
      • isUninferredTypeArgument

        public boolean isUninferredTypeArgument()
        Returns whether or not this wildcard is a type argument for which inference failed to infer a type.
        Returns:
        true if this wildcard is a type argument for which inference failed