TypeReference (Jackson JSON Processor)
Date: 2013-07-14

org.codehaus.jackson.type

## Class TypeReference<T>

- java.lang.Object
- - org.codehaus.jackson.type.TypeReference<T>

- All Implemented Interfaces:
    Comparable<TypeReference<T>>

      public abstract class TypeReference<T>
      extends Object
      implements Comparable<TypeReference<T>>

  This class is used to pass full generics type information, and avoid problems with type erasure (that basically removes most usable type references from runtime Class objects). It is based on ideas from http://gafter.blogspot.com/2006/12/super-type-tokens.html, Additional idea (from a suggestion made in comments of the article) is to require bogus implementation of `Comparable` (any such generic interface would do, as long as it forces a method with generic type to be implemented). to ensure that a Type argument is indeed given.

  Usage is by sub-classing: here is one way to instantiate reference to generic type `List<Integer>`:

        TypeReference ref = new TypeReference<List<Integer>>() { };

  which can be passed to methods that accept TypeReference.

- - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `TypeReference()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `compareTo(TypeReference<T> o)` The only reason we define this method (and require implementation of `Comparable`) is to prevent constructing a reference without type information.
    `Type` | `getType()`

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

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### TypeReference

          protected TypeReference()

  - ### Method Detail

    - #### getType

          public Type getType()

    - #### compareTo

          public int compareTo(TypeReference<T> o)

      The only reason we define this method (and require implementation of `Comparable`) is to prevent constructing a reference without type information.
      Specified by:
        `compareTo` in interface `Comparable<TypeReference<T>>`