Class GenericType<T>

  • Type Parameters:
    T - the generic type parameter.

    public class GenericType<T>
    extends 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
    Author:
    Marek Potociar, Paul Sandoz, Martin Matula
    • 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:
        IllegalArgumentException - in case the generic type parameter value is not provided by any of the subclasses.
      • GenericType

        public GenericType​(Type genericType)
        Constructs a new generic type, supplying the generic type information and deriving the class.
        Parameters:
        genericType - the generic type.
        Throws:
        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​(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 Type getType()
        Retrieve the type represented by the generic type instance.
        Returns:
        the actual type represented by this generic type instance.
      • getRawType

        public final 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.
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object