Class TypeReference<T>

  • All Implemented Interfaces:
    java.lang.Comparable<TypeReference<T>>

    public abstract class TypeReference<T>
    extends java.lang.Object
    implements java.lang.Comparable<TypeReference<T>>
    This generic abstract class is used for obtaining full generics type information by sub-classing; it must be converted to ResolvedType implementation (implemented by JavaType from "databind" bundle) to be used. Class 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, or resolved using TypeFactory to obtain ResolvedType.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method 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.
      java.lang.reflect.Type getType()  
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • getType

        public java.lang.reflect.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 java.lang.Comparable<T>