Class JTypeWildcard

  • All Implemented Interfaces:
    JGenerable, java.lang.Comparable<JType>

    final class JTypeWildcard
    extends JClass
    Represents a wildcard type like "? extends Foo".

    Instances of this class can be obtained from JClass.wildcard() TODO: extend this to cover "? super Integer".

    Our modeling of types are starting to look really ugly. ideally it should have been done somewhat like APT, but it's too late now.

    • Field Detail

      • bound

        private final JClass bound
    • Constructor Detail

      • JTypeWildcard

        JTypeWildcard​(JClass bound)
    • Method Detail

      • name

        public java.lang.String name()
        Description copied from class: JClass
        Gets the name of this class.
        Specified by:
        name in class JClass
        Returns:
        name of this class, without any qualification. For example, this method returns "String" for java.lang.String.
      • fullName

        public java.lang.String fullName()
        Description copied from class: JType
        Gets the full name of the type. See http://java.sun.com/docs/books/jls/second_edition/html/names.doc.html#25430 for the details.
        Specified by:
        fullName in class JType
        Returns:
        Strings like "int", "java.lang.String", "java.io.File[]". Never null.
      • _package

        public JPackage _package()
        Description copied from class: JClass
        Gets the package to which this class belongs. TODO: shall we move move this down?
        Specified by:
        _package in class JClass
      • _extends

        public JClass _extends()
        Returns the class bound of this variable.

        If no bound is given, this method returns Object.

        Specified by:
        _extends in class JClass
        Returns:
        Returns the JClass representing the superclass of the entity (class or interface) represented by this JClass. Even if no super class is given explicitly or this JClass is not a class, this method still returns JClass for Object. If this JClass represents Object, return null.
      • _implements

        public java.util.Iterator<JClass> _implements()
        Returns the interface bounds of this variable.
        Specified by:
        _implements in class JClass
        Returns:
        A non-null valid iterator that iterates all JClass objects that represents those interfaces implemented by this object.
      • isInterface

        public boolean isInterface()
        Description copied from class: JClass
        Checks if this object represents an interface.
        Specified by:
        isInterface in class JClass
      • isAbstract

        public boolean isAbstract()
        Description copied from class: JClass
        Checks if this class is an abstract class.
        Specified by:
        isAbstract in class JClass
      • substituteParams

        protected JClass substituteParams​(JTypeVar[] variables,
                                          java.util.List<JClass> bindings)
        Description copied from class: JClass
        Substitutes the type variables with their actual arguments.

        For example, when this class is Map<String,Map<V>>, (where V then doing substituteParams( V, Integer ) returns a JClass for Map<String,Map<Integer>>.

        This method needs to work recursively.

        Specified by:
        substituteParams in class JClass