com.google.inject
Class TypeLiteral<T>

java.lang.Object
  extended by com.google.inject.TypeLiteral<T>
All Implemented Interfaces:
Serializable

public class TypeLiteral<T>
extends Object
implements Serializable

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 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.

See Also:
Serialized Form

Constructor Summary
protected TypeLiteral()
          Constructs a new type literal.
 
Method Summary
 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  Object writeReplace()
          Returns the canonical form of this type literal for serialization.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

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 Detail

getType

public final Type getType()
Gets underlying Type instance.


hashCode

public final int hashCode()
Overrides:
hashCode in class Object

equals

public final boolean equals(Object o)
Overrides:
equals in class Object

toString

public final String toString()
Overrides:
toString in class Object

get

public static TypeLiteral<?> get(Type type)
Gets type literal for the given Type instance.


get

public static <T> TypeLiteral<T> get(Class<T> type)
Gets type literal for the given Class instance.


writeReplace

protected final Object writeReplace()
Returns the canonical form of this type literal for serialization. The returned instance is always a TypeLiteral, never a subclass. This prevents problems caused by serializing anonymous types.