Class JTypeWildcard

All Implemented Interfaces:
JGenerable, 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 Details

    • bound

      private final JClass bound
  • Constructor Details

    • JTypeWildcard

      JTypeWildcard(JClass bound)
  • Method Details

    • name

      public 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 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 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, 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
    • generate

      public void generate(JFormatter f)
      Specified by:
      generate in interface JGenerable
      Overrides:
      generate in class JClass