Interface TypeEnvironment

  • All Known Implementing Classes:
    CompoundTypeEnvironment, IdentityTypeEnvironment

    public interface TypeEnvironment
    A typing context that knows how to "resolve" the generic parameters of a Type.

    For example:

     
      class Shop&ltT&gt {
        List&ltT&gt getCatalog() { ... }
      }
     
     

     
     class Bakery extends Shop<Bread> { ... }
     
     

    Consider the type returned by method getCatalog(). There are two possible contexts here. In the context of Shop, the type is List. In the context of Bakery, the type is List. Each of these contexts can be represented by a TypeEnvironment.

    • Method Detail

      • bind

        Type bind​(Type type)
        Binds as many generic components of the given type as possible in this context.

        Warning: if the returned Type is a Class, then it's guaranteed to be a regular Java Class. In all other cases, this method might return a custom implementation of some interface that extends Type. Be sure not to mix these objects with Java's implementations of Type to avoid potential identity problems.

        This class does not support bindings involving inner classes or upper/lower bounds.

        Returns:
        a type where the generic arguments have been replaced by raw classes whenever this is possible.