public abstract class TypeLiteral<T> extends Object
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>>() {};
Assumes that type T
implements Object.equals(java.lang.Object)
and
Object.hashCode()
as value (as opposed to identity) comparison.
Modifier | Constructor and Description |
---|---|
protected |
TypeLiteral()
Constructs a new type literal.
|
Modifier and Type | Method and Description |
---|---|
boolean |
equals(Object o) |
static <T> TypeLiteral<T> |
get(Class<T> type)
Gets type literal for the given
Class instance. |
static TypeLiteral<?> |
get(Type type)
Gets type literal for the given
Type instance. |
Type |
getType()
Gets underlying
Type instance. |
int |
hashCode() |
String |
toString() |
protected TypeLiteral()
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.
public Type getType()
Type
instance.public static TypeLiteral<?> get(Type type)
Type
instance.public static <T> TypeLiteral<T> get(Class<T> type)
Class
instance.Copyright © 2013. All Rights Reserved.