Class TypeLiteral<T>
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 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>>() {};
This syntax cannot be used to create type literals that have wildcard
parameters, such as Class<?>
or List<? extends CharSequence>
.
Such type literals must be constructed programmatically, either by or by using the
Types
factory class.
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:
<p>
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>"
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
o)
static <T> TypeLiteral<T>
<T> type)
Gets type literal for the givenClass
instance.static TypeLiteral<?>
type)
Gets type literal for the givenType
instance.<TypeLiteral<?>>
methodOrConstructor)
Returns the resolved generic exception types thrown byconstructor
.TypeLiteral<?>
field)
Returns the resolved generic type offield
.<TypeLiteral<?>>
methodOrConstructor)
Returns the resolved generic parameter types ofmethodOrConstructor
.<? super T>
Returns the raw (non-generic) type for this type.TypeLiteral<?>
method)
Returns the resolved generic return type ofmethod
.TypeLiteral<?>
<?> supertype)
Returns the generic form ofsupertype
.getType()
Gets underlyingType
instance.int
hashCode()
toString()
Methods inherited from class java.lang.
, , , , , , ,
-
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.
-
-
Method Details
-
getRawType
Returns the raw (non-generic) type for this type.- Since:
- 2.0
-
getType
public final getType()Gets underlyingType
instance. -
hashCode
public final int hashCode()- Overrides:
in class
-
equals
public final boolean equals( o)- Overrides:
in class
-
toString
public final toString()- Overrides:
in class
-
get
public static type)Gets type literal for the givenType
instance. -
get
public static <T> <T> type)Gets type literal for the givenClass
instance. -
getSupertype
public <?> supertype)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
public field)Returns the resolved generic type offield
.- Parameters:
field
- a field defined by this or any superclass.- Since:
- 2.0
-
getParameterTypes
public < methodOrConstructor)Returns the resolved generic parameter types ofmethodOrConstructor
.- Parameters:
methodOrConstructor
- a method or constructor defined by this or any supertype.- Since:
- 2.0
-
getExceptionTypes
public < methodOrConstructor)Returns the resolved generic exception types thrown byconstructor
.- Parameters:
methodOrConstructor
- a method or constructor defined by this or any supertype.- Since:
- 2.0
-
getReturnType
public method)Returns the resolved generic return type ofmethod
.- Parameters:
method
- a method defined by this or any supertype.- Since:
- 2.0
-