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
    • 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.
      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.
      int hashCode​()  
      java.lang.String toString​()  
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    • 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.
      • 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