TypeDescriptor (Google Cloud Dataflow SDK 1.9.1 API)

Google Cloud Dataflow SDK for Java, version 1.9.1


Class TypeDescriptor<T>

  • Type Parameters:
    T - the type represented by this TypeDescriptor
    All Implemented Interfaces:

    public abstract class TypeDescriptor<T>
    extends Object
    implements Serializable
    A description of a Java type, including actual generic parameters where possible.

    To prevent losing actual type arguments due to erasure, create an anonymous subclass with concrete types:

     TypeDecriptor<List<String>> = new TypeDescriptor<List<String>>() {};

    If the above were not an anonymous subclass, the type List<String> would be erased and unavailable at run time.

    See Also:
    Serialized Form
    • Constructor Detail

      • TypeDescriptor

        protected TypeDescriptor()
        Creates a TypeDescriptor representing the type parameter T. To use this constructor properly, the type parameter must be a concrete type, for example new TypeDescriptor<List<String>>(){}.
      • TypeDescriptor

        protected TypeDescriptor(Object instance)
        Creates a TypeDescriptor representing the type parameter T, which should resolve to a concrete type in the context of the class clazz.

        Unlike TypeDescriptor(Class) this will also use context's of the enclosing instances while attempting to resolve the type. This means that the types of any classes instantiated in the concrete instance should be resolvable.

      • TypeDescriptor

        protected TypeDescriptor(Class<?> clazz)
        Creates a TypeDescriptor representing the type parameter T, which should resolve to a concrete type in the context of the class clazz.
    • Method Detail

      • getComponentType

        public TypeDescriptor<?> getComponentType()
        Returns the component type if this type is an array type, otherwise returns null.
      • getSupertype

        public final TypeDescriptor<? super T> getSupertype(Class<? super T> superclass)
        Returns the generic form of a supertype.
      • isArray

        public final boolean isArray()
        Returns true if this type is known to be an array type.
      • getTypeParameter

        public final TypeVariable<Class<? super T>> getTypeParameter(String paramName)
        Returns a TypeVariable for the named type parameter. Throws IllegalArgumentException if a type variable by the requested type parameter is not found.

        For example, new TypeDescriptor<List>(){}.getTypeParameter("T") returns a TypeVariable<? super List> representing the formal type parameter T.

        Do not mistake the type parameters (formal type argument list) with the actual type arguments. For example, if a class Foo extends List<String>, it does not make sense to ask for a type parameter, because Foo does not have any.

      • isSupertypeOf

        public final boolean isSupertypeOf(TypeDescriptor<?> source)
        Returns true if this type is assignable from the given type.
      • isSubtypeOf

        public final boolean isSubtypeOf(TypeDescriptor<?> parent)
        Return true if this type is a subtype of the given type.
      • getArgumentTypes

        public List<TypeDescriptor<?>> getArgumentTypes(Method method)
        Returns a list of argument types for the given method, which must be a part of the class.
      • resolveType

        public TypeDescriptor<?> resolveType(Type type)
        Returns a TypeDescriptor representing the given type, with type variables resolved according to the specialization in this type.

        For example, consider the following class:

         class MyList implements List<String> { ... }

        The TypeDescriptor returned by

             .resolveType(Mylist.class.getMethod("get", int.class).getGenericReturnType)
        will represent the type String.

      • equals

        public boolean equals(Object other)
        Two type descriptor are equal if and only if they represent the same type.
        equals in class Object
      • hashCode

        public int hashCode()
        hashCode in class Object