Package com.google.inject
Class TypeLiteral<T>
java.lang.Object
com.google.inject.TypeLiteral<T>
Represents a generic type
T. Java doesn't yet provide a way to represent generic types,
so this class does. Forces clients to create a subclass of this class which enables retrieval of
the type information even at runtime.
For example, to create a type literal for List<String>, you can create an empty
anonymous inner class:
TypeLiteral<List<String>> list = new TypeLiteral<List<String>>() {};
Along with modeling generic types, this class can resolve type parameters. For example, to
figure out what type keySet() returns on a Map<Integer, String>, use this code:
TypeLiteral<Map<Integer, String>> mapType
= new TypeLiteral<Map<Integer, String>>() {};
TypeLiteral<?> keySetType
= mapType.getReturnType(Map.class.getMethod("keySet"));
System.out.println(keySetType); // prints "Set<Integer>"
-
Field Summary
Fields -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedConstructs a new type literal.(package private)TypeLiteral(Type type) Unsafe. -
Method Summary
Modifier and TypeMethodDescriptionfinal boolean(package private) static TypeLiteral<?> fromSuperclassTypeParameter(Class<?> subclass) Gets type literal from super class's type parameter.static <T> TypeLiteral<T> Gets type literal for the givenClassinstance.static TypeLiteral<?> Gets type literal for the givenTypeinstance.List<TypeLiteral<?>> getExceptionTypes(Member methodOrConstructor) Returns the resolved generic exception types thrown byconstructor.TypeLiteral<?> getFieldType(Field field) Returns the resolved generic type offield.List<TypeLiteral<?>> getParameterTypes(Member methodOrConstructor) Returns the resolved generic parameter types ofmethodOrConstructor.Returns the raw (non-generic) type for this type.TypeLiteral<?> getReturnType(Method method) Returns the resolved generic return type ofmethod.(package private) static TypegetSuperclassTypeParameter(Class<?> subclass) Returns the type from super class's type parameter incanonical form.TypeLiteral<?> getSupertype(Class<?> supertype) Returns the generic form ofsupertype.final TypegetType()Gets underlyingTypeinstance.final inthashCode()(package private) final TypeLiteral<Provider<T>> Gets the type of this type's provider.(package private) TypeLiteral<?> Resolves known type parameters intoResolveand returns the result.private List<TypeLiteral<?>> resolveAll(Type[] types) Returns an immutable list of the resolved types.(package private) TyperesolveType(Type toResolve) final StringtoString()
-
Field Details
-
rawType
-
type
-
hashCode
final int hashCode
-
-
Constructor Details
-
TypeLiteral
protected TypeLiteral()Constructs a new type literal. Derives represented class from type parameter.Clients create an empty anonymous subclass. Doing so embeds the type parameter in the anonymous class's type hierarchy so we can reconstitute it at runtime despite erasure.
-
TypeLiteral
TypeLiteral(Type type) Unsafe. Constructs a type literal manually.
-
-
Method Details
-
getSuperclassTypeParameter
Returns the type from super class's type parameter incanonical form. -
fromSuperclassTypeParameter
Gets type literal from super class's type parameter. -
getRawType
Returns the raw (non-generic) type for this type.- Since:
- 2.0
-
getType
Gets underlyingTypeinstance. -
providerType
Gets the type of this type's provider. -
hashCode
public final int hashCode() -
equals
-
toString
-
get
Gets type literal for the givenTypeinstance. -
get
Gets type literal for the givenClassinstance. -
resolveAll
Returns an immutable list of the resolved types. -
resolve
Resolves known type parameters intoResolveand returns the result. -
resolveType
-
getSupertype
Returns the generic form ofsupertype. For example, if this isArrayList<String>, this returnsIterable<String>given the inputIterable.class.- Parameters:
supertype- a superclass of, or interface implemented by, this.- Since:
- 2.0
-
getFieldType
Returns the resolved generic type offield.- Parameters:
field- a field defined by this or any superclass.- Since:
- 2.0
-
getParameterTypes
Returns the resolved generic parameter types ofmethodOrConstructor.- Parameters:
methodOrConstructor- a method or constructor defined by this or any supertype.- Since:
- 2.0
-
getExceptionTypes
Returns the resolved generic exception types thrown byconstructor.- Parameters:
methodOrConstructor- a method or constructor defined by this or any supertype.- Since:
- 2.0
-
getReturnType
Returns the resolved generic return type ofmethod.- Parameters:
method- a method defined by this or any supertype.- Since:
- 2.0
-