TypeToken
Date: 2016-11-03

com.google.gson.reflect

## Class TypeToken<T>

- java.lang.Object
- - com.google.gson.reflect.TypeToken<T>

-     public class TypeToken<T>
      extends java.lang.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:

  `TypeToken<List<String>> list = new TypeToken<List<String>>() {};`

  This syntax cannot be used to create type literals that have wildcard parameters, such as `Class<?>` or `List<? extends CharSequence>`.

- - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `TypeToken()` Constructs a new type literal.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `equals(java.lang.Object o)`
    `static <T> TypeToken<T>` | `get(java.lang.Class<T> type)` Gets type literal for the given `Class` instance.
    `static TypeToken<?>` | `get(java.lang.reflect.Type type)` Gets type literal for the given `Type` instance.
    `static TypeToken<?>` | `getArray(java.lang.reflect.Type componentType)` Gets type literal for the array type whose elements are all instances of `componentType`.
    `static TypeToken<?>` | `getParameterized(java.lang.reflect.Type rawType, java.lang.reflect.Type... typeArguments)` Gets type literal for the parameterized type represented by applying `typeArguments` to `rawType`.
    `java.lang.Class<? super T>` | `getRawType()` Returns the raw (non-generic) type for this type.
    `java.lang.reflect.Type` | `getType()` Gets underlying `Type` instance.
    `int` | `hashCode()`
    `boolean` | `isAssignableFrom(java.lang.Class<?> cls)` Deprecated. this implementation may be inconsistent with javac for types with wildcards.
    `boolean` | `isAssignableFrom(java.lang.reflect.Type from)` Deprecated. this implementation may be inconsistent with javac for types with wildcards.
    `boolean` | `isAssignableFrom(TypeToken<?> token)` Deprecated. this implementation may be inconsistent with javac for types with wildcards.
    `java.lang.String` | `toString()`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### TypeToken

          protected TypeToken()

      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 java.lang.Class<? super T> getRawType()

      Returns the raw (non-generic) type for this type.

    - #### getType

          public final java.lang.reflect.Type getType()

      Gets underlying `Type` instance.

    - #### isAssignableFrom

          @Deprecated
          public boolean isAssignableFrom(java.lang.Class<?> cls)

      Deprecated. this implementation may be inconsistent with javac for types with wildcards.
      Check if this type is assignable from the given class object.

    - #### isAssignableFrom

          @Deprecated
          public boolean isAssignableFrom(java.lang.reflect.Type from)

      Deprecated. this implementation may be inconsistent with javac for types with wildcards.
      Check if this type is assignable from the given Type.

    - #### isAssignableFrom

          @Deprecated
          public boolean isAssignableFrom(TypeToken<?> token)

      Deprecated. this implementation may be inconsistent with javac for types with wildcards.
      Check if this type is assignable from the given type token.

    - #### hashCode

          public final int hashCode()

      Overrides:
        `hashCode` in class `java.lang.Object`

    - #### equals

          public final boolean equals(java.lang.Object o)

      Overrides:
        `equals` in class `java.lang.Object`

    - #### toString

          public final java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`

    - #### get

          public static TypeToken<?> get(java.lang.reflect.Type type)

      Gets type literal for the given `Type` instance.

    - #### get

          public static <T> TypeToken<T> get(java.lang.Class<T> type)

      Gets type literal for the given `Class` instance.

    - #### getParameterized

          public static TypeToken<?> getParameterized(java.lang.reflect.Type rawType,
                                      java.lang.reflect.Type... typeArguments)

      Gets type literal for the parameterized type represented by applying `typeArguments` to `rawType`.

    - #### getArray

          public static TypeToken<?> getArray(java.lang.reflect.Type componentType)

      Gets type literal for the array type whose elements are all instances of `componentType`.