Package com.google.inject.internal
Class MoreTypes
- java.lang.Object
-
- com.google.inject.internal.MoreTypes
-
public class MoreTypes extends java.lang.Object
Static methods for working with types that we aren't publishing in the publicTypes
API.- Author:
- jessewilson@google.com (Jesse Wilson)
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
MoreTypes.GenericArrayTypeImpl
static class
MoreTypes.ParameterizedTypeImpl
static class
MoreTypes.WildcardTypeImpl
The WildcardType interface supports multiple upper bounds and multiple lower bounds.
-
Field Summary
Fields Modifier and Type Field Description static java.lang.reflect.Type[]
EMPTY_TYPE_ARRAY
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static java.lang.reflect.Type
canonicalize(java.lang.reflect.Type type)
Returns a type that is functionally equal but not necessarily equal according toObject.equals()
.static <T> TypeLiteral<T>
canonicalizeForKey(TypeLiteral<T> typeLiteral)
Returns an type that's appropriate for use in a key.static <T> Key<T>
canonicalizeKey(Key<T> key)
Returns a key that doesn't hold any references to parent classes.static boolean
equals(java.lang.reflect.Type a, java.lang.reflect.Type b)
Returns true ifa
andb
are equal.static java.lang.reflect.Type
getGenericSupertype(java.lang.reflect.Type type, java.lang.Class<?> rawType, java.lang.Class<?> toResolve)
Returns the generic supertype fortype
.static java.lang.Class<?>
getRawType(java.lang.reflect.Type type)
static java.lang.reflect.Type
resolveTypeVariable(java.lang.reflect.Type type, java.lang.Class<?> rawType, java.lang.reflect.TypeVariable unknown)
static java.lang.String
typeToString(java.lang.reflect.Type type)
-
-
-
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 ajavax.inject.Provider
, this returns acom.google.inject.Provider
with the same type parameters.If the type is a primitive, the corresponding wrapper type will be returned.
- Throws:
ConfigurationException
- iftype
contains a type variable
-
canonicalize
public static java.lang.reflect.Type canonicalize(java.lang.reflect.Type type)
Returns a type that is functionally equal but not necessarily equal according toObject.equals()
. The returned type isSerializable
.
-
getRawType
public static java.lang.Class<?> getRawType(java.lang.reflect.Type type)
-
equals
public static boolean equals(java.lang.reflect.Type a, java.lang.reflect.Type b)
Returns true ifa
andb
are equal.
-
typeToString
public static java.lang.String typeToString(java.lang.reflect.Type type)
-
getGenericSupertype
public static java.lang.reflect.Type getGenericSupertype(java.lang.reflect.Type type, java.lang.Class<?> rawType, java.lang.Class<?> toResolve)
Returns the generic supertype fortype
. For example, given a classIntegerSet
, the result for when supertype isSet.class
isSet<Integer>
and the result when the supertype isCollection.class
isCollection<Integer>
.
-
resolveTypeVariable
public static java.lang.reflect.Type resolveTypeVariable(java.lang.reflect.Type type, java.lang.Class<?> rawType, java.lang.reflect.TypeVariable unknown)
-
-