Class MoreTypes


  • public class MoreTypes
    extends Object
    Static methods for working with types that we aren't publishing in the public Types API.
    Author:
    jessewilson@google.com (Jesse Wilson)
    • Field Detail

      • EMPTY_TYPE_ARRAY

        public static final Type[] EMPTY_TYPE_ARRAY
    • Method Detail

      • canonicalizeKey

        public static <T> Key<T> canonicalizeKey​(Key<T> key)
        Returns a key that doesn't hold any references to parent classes. This is necessary for anonymous keys, so ensure we don't hold a ref to the containing module (or class) forever.
      • canonicalizeForKey

        public static <T> TypeLiteral<T> canonicalizeForKey​(TypeLiteral<T> typeLiteral)
        Returns an type that's appropriate for use in a key.

        If the raw type of typeLiteral is a javax.inject.Provider, this returns a com.google.inject.Provider with the same type parameters.

        If the type is a primitive, the corresponding wrapper type will be returned.

        Throws:
        ConfigurationException - if type contains a type variable
      • canonicalize

        public static Type canonicalize​(Type type)
        Returns a type that is functionally equal but not necessarily equal according to Object.equals(). The returned type is Serializable.
      • getRawType

        public static Class<?> getRawType​(Type type)
      • equals

        public static boolean equals​(Type a,
                                     Type b)
        Returns true if a and b are equal.
      • typeToString

        public static String typeToString​(Type type)
      • getGenericSupertype

        public static Type getGenericSupertype​(Type type,
                                               Class<?> rawType,
                                               Class<?> toResolve)
        Returns the generic supertype for type. For example, given a class IntegerSet, the result for when supertype is Set.class is Set<Integer> and the result when the supertype is Collection.class is Collection<Integer>.