Class GenericType<T>

  • Type Parameters:
    T - the generic type parameter.

    public class GenericType<T>
    extends java.lang.Object
    Represents a generic message entity type T. Supports in-line instantiation of objects that represent generic types with actual type parameters. An object that represents any parameterized type may be obtained by sub-classing GenericType. Alternatively, an object representing a concrete parameterized type can be created using a GenericType(java.lang.reflect.Type) and manually specifying the actual (parameterized) type.

    For example:

     GenericType<List<String>> stringListType = new GenericType<List<String>>() {
     };
     

    Or:

      public class MyGenericType extends GenericType<List<String>> { ... }
    
      ...
    
      MyGenericType stringListType = new MyGenericType();
     

    Note that due to the Java type erasure limitations the parameterized type information must be specified on a subclass, not just during the instance creation. For example, the following case would throw an IllegalArgumentException:

      public class MyGenericType<T> extends GenericType<T> { ... }
    
      ...
    
      // The type is only specified on instance, not in a sub-class
      MyGenericType<List<String>> stringListType =
              new MyGenericType<List<String>>();
     
    Since:
    2.0
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.lang.Class<?> rawType
      The actual raw parameter type.
      private java.lang.reflect.Type type
      Type represented by the generic type instance.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected GenericType()
      Constructs a new generic type, deriving the generic type and class from type parameter.
        GenericType​(java.lang.reflect.Type genericType)
      Constructs a new generic type, supplying the generic type information and deriving the class.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean equals​(java.lang.Object obj)  
      static GenericType forInstance​(java.lang.Object instance)
      Create a generic type from a Java instance.
      private static java.lang.Class getArrayClass​(java.lang.Class c)
      Get Array class of component class.
      private static java.lang.Class getClass​(java.lang.reflect.Type type)
      Returns the object representing the class or interface that declared the supplied type.
      java.lang.Class<?> getRawType()
      Returns the object representing the class or interface that declared the type represented by this generic type instance.
      java.lang.reflect.Type getType()
      Retrieve the type represented by the generic type instance.
      (package private) static java.lang.reflect.Type getTypeArgument​(java.lang.Class<?> clazz, java.lang.Class<?> baseClass)
      Return the value of the type parameter of GenericType<T>.
      int hashCode()  
      java.lang.String toString()  
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    • Field Detail

      • type

        private final java.lang.reflect.Type type
        Type represented by the generic type instance.
      • rawType

        private final java.lang.Class<?> rawType
        The actual raw parameter type.
    • Constructor Detail

      • GenericType

        protected GenericType()
        Constructs a new generic type, deriving the generic type and class from type parameter. Note that this constructor is protected, users should create a (usually anonymous) subclass as shown above.
        Throws:
        java.lang.IllegalArgumentException - in case the generic type parameter value is not provided by any of the subclasses.
      • GenericType

        public GenericType​(java.lang.reflect.Type genericType)
        Constructs a new generic type, supplying the generic type information and deriving the class.
        Parameters:
        genericType - the generic type.
        Throws:
        java.lang.IllegalArgumentException - if genericType is null or not an instance of Class or ParameterizedType whose raw type is an instance of Class.
    • Method Detail

      • forInstance

        public static GenericType forInstance​(java.lang.Object instance)
        Create a generic type from a Java instance.

        If the supplied instance is a GenericEntity, the generic type will be computed using the GenericEntity.getType(). Otherwise instance.getClass() will be used.

        Parameters:
        instance - Java instance for which the GenericType description should be created.
        Returns:
        GenericType describing the Java instance.
        Since:
        2.1
      • getType

        public final java.lang.reflect.Type getType()
        Retrieve the type represented by the generic type instance.
        Returns:
        the actual type represented by this generic type instance.
      • getRawType

        public final java.lang.Class<?> getRawType()
        Returns the object representing the class or interface that declared the type represented by this generic type instance.
        Returns:
        the class or interface that declared the type represented by this generic type instance.
      • getClass

        private static java.lang.Class getClass​(java.lang.reflect.Type type)
        Returns the object representing the class or interface that declared the supplied type.
        Parameters:
        type - Type to inspect.
        Returns:
        the class or interface that declared the supplied type.
      • getArrayClass

        private static java.lang.Class getArrayClass​(java.lang.Class c)
        Get Array class of component class.
        Parameters:
        c - the component class of the array
        Returns:
        the array class.
      • getTypeArgument

        static java.lang.reflect.Type getTypeArgument​(java.lang.Class<?> clazz,
                                                      java.lang.Class<?> baseClass)
        Return the value of the type parameter of GenericType<T>.
        Parameters:
        clazz - subClass of baseClass to analyze.
        baseClass - base class having the type parameter the value of which we need to retrieve
        Returns:
        the parameterized type of GenericType<T> (aka T)
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object