org.elasticsearch.common.inject
Class TypeLiteral<T>

java.lang.Object
  extended by org.elasticsearch.common.inject.TypeLiteral<T>

public class TypeLiteral<T>
extends Object

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>>() {};

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 programatically, either by extracting types from members 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>"

Author:
crazybob@google.com (Bob Lee), jessewilson@google.com (Jesse Wilson)

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.
 List<TypeLiteral<?>> getExceptionTypes(Member methodOrConstructor)
          Returns the resolved generic exception types thrown by constructor.
 TypeLiteral<?> getFieldType(Field field)
          Returns the resolved generic type of field.
 List<TypeLiteral<?>> getParameterTypes(Member methodOrConstructor)
          Returns the resolved generic parameter types of methodOrConstructor.
 Class<? super T> getRawType()
          Returns the raw (non-generic) type for this type.
 TypeLiteral<?> getReturnType(Method method)
          Returns the resolved generic return type of method.
 TypeLiteral<?> getSupertype(Class<?> supertype)
          Returns the generic form of supertype.
 Type getType()
          Gets underlying Type instance.
 int hashCode()
           
 String toString()
           
 
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

getRawType

public final Class<? super T> getRawType()
Returns the raw (non-generic) type for this type.

Since:
2.0

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.


getSupertype

public TypeLiteral<?> getSupertype(Class<?> supertype)
Returns the generic form of supertype. For example, if this is ArrayList<String>, this returns Iterable<String> given the input Iterable.class.

Parameters:
supertype - a superclass of, or interface implemented by, this.
Since:
2.0

getFieldType

public TypeLiteral<?> getFieldType(Field field)
Returns the resolved generic type of field.

Parameters:
field - a field defined by this or any superclass.
Since:
2.0

getParameterTypes

public List<TypeLiteral<?>> getParameterTypes(Member methodOrConstructor)
Returns the resolved generic parameter types of methodOrConstructor.

Parameters:
methodOrConstructor - a method or constructor defined by this or any supertype.
Since:
2.0

getExceptionTypes

public List<TypeLiteral<?>> getExceptionTypes(Member methodOrConstructor)
Returns the resolved generic exception types thrown by constructor.

Parameters:
methodOrConstructor - a method or constructor defined by this or any supertype.
Since:
2.0

getReturnType

public TypeLiteral<?> getReturnType(Method method)
Returns the resolved generic return type of method.

Parameters:
method - a method defined by this or any supertype.
Since:
2.0


Copyright © 2009-2012. All Rights Reserved.