Class TypeUtils

  • All Implemented Interfaces:
    Utils

    public abstract class TypeUtils
    extends java.lang.Object
    implements Utils
    The utilities class for Type
    Since:
    1.0.0
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static java.lang.Class<?> asClass​(java.lang.reflect.Type type)  
      static java.lang.reflect.GenericArrayType asGenericArrayType​(java.lang.reflect.Type type)  
      static java.lang.reflect.ParameterizedType asParameterizedType​(java.lang.reflect.Type type)  
      static java.lang.reflect.TypeVariable asTypeVariable​(java.lang.reflect.Type type)  
      static java.lang.reflect.WildcardType asWildcardType​(java.lang.reflect.Type type)  
      protected static java.util.List<java.lang.reflect.Type> doGetHierarchicalTypes​(java.lang.reflect.Type type)  
      protected static java.util.List<java.lang.Class> doResolveActualTypeArgumentClasses​(java.lang.reflect.Type type, java.lang.reflect.Type baseType)  
      protected static java.util.List<java.lang.reflect.Type> doResolveActualTypeArguments​(java.lang.reflect.Type type, java.lang.Class baseClass)  
      protected static java.util.List<java.lang.reflect.Type> doResolveActualTypeArguments​(java.lang.reflect.Type type, java.lang.reflect.Type baseType)  
      static java.util.List<java.lang.reflect.Type> findAllGenericInterfaces​(java.lang.reflect.Type type, java.util.function.Predicate<? super java.lang.reflect.Type>... typeFilters)
      Find all super interfaces from the specified type
      static java.util.List<java.lang.reflect.Type> findAllGenericSuperclasses​(java.lang.reflect.Type type, java.util.function.Predicate<? super java.lang.reflect.Type>... typeFilters)
      Find all generic super types from the specified type, which are filtered by typeFilters
      static java.util.List<java.lang.reflect.ParameterizedType> findAllParameterizedTypes​(java.lang.reflect.Type type, java.util.function.Predicate<? super java.lang.reflect.ParameterizedType>... typeFilters)
      Find all specified types' generic types(including super classes and interfaces) hierarchically that are assignable from ParameterizedType interface
      static java.util.List<java.lang.reflect.Type> findAllTypes​(java.lang.reflect.Type type, java.util.function.Predicate<? super java.lang.reflect.Type>... typeFilters)  
      static java.util.List<java.lang.reflect.Type> findHierarchicalTypes​(java.lang.reflect.Type type, java.util.function.Predicate<? super java.lang.reflect.Type>... typeFilters)  
      static java.util.List<java.lang.reflect.ParameterizedType> findParameterizedTypes​(java.lang.reflect.Type type, java.util.function.Predicate<? super java.lang.reflect.ParameterizedType>... typeFilters)
      Find the specified types' generic types(including super classes and interfaces) that are assignable from ParameterizedType interface
      protected static java.util.List<java.lang.reflect.Type> findTypes​(java.lang.reflect.Type type, boolean includeSelf, boolean includeHierarchicalTypes, boolean includeGenericSuperclass, boolean includeGenericInterfaces, java.util.function.Predicate<? super java.lang.reflect.Type>... typeFilters)  
      protected static java.util.List<java.lang.reflect.Type> getActualTypeArguments​(java.lang.reflect.Type type)  
      static java.util.List<java.lang.reflect.Type> getAllGenericInterfaces​(java.lang.reflect.Type type)
      Get all generic super interfaces from the specified type
      static java.util.List<java.lang.reflect.Type> getAllGenericSuperclasses​(java.lang.reflect.Type type)
      Get all generic super types from the specified type
      static java.util.List<java.lang.reflect.ParameterizedType> getAllParameterizedTypes​(java.lang.reflect.Type type)
      Get all parameterized types(including self-type, super classes and interfaces) hierarchically
      static java.util.List<java.lang.reflect.Type> getAllTypes​(java.lang.reflect.Type type)
      Get all generic types(including self-type, super classes and interfaces) hierarchically.
      static java.lang.String getClassName​(java.lang.reflect.Type type)  
      static java.util.Set<java.lang.String> getClassNames​(java.lang.Iterable<? extends java.lang.reflect.Type> types)  
      static java.lang.reflect.Type getComponentType​(java.lang.reflect.Type type)  
      static java.util.List<java.lang.reflect.Type> getHierarchicalTypes​(java.lang.reflect.Type type)
      Get all generic super types(including super classes and interfaces) hierarchically
      static java.util.List<java.lang.reflect.ParameterizedType> getParameterizedTypes​(java.lang.reflect.Type type)
      Get the parameterized types(including self-type, super classes and interfaces)
      static java.lang.Class<?> getRawClass​(java.lang.reflect.Type type)  
      static java.lang.reflect.Type getRawType​(java.lang.reflect.Type type)  
      static java.lang.String getTypeName​(java.lang.reflect.Type type)
      Get the type name safely
      static java.lang.String[] getTypeNames​(java.lang.reflect.Type... types)
      Get the type names of the specified types
      static boolean isActualType​(java.lang.reflect.Type type)  
      protected static boolean isAssignableFrom​(java.lang.Class<?> superType, java.lang.Class<?> targetType)
      the semantics is same as Class.isAssignableFrom(Class)
      static boolean isAssignableFrom​(java.lang.Class<?> superClass, java.lang.reflect.Type targetType)
      the semantics is same as Class.isAssignableFrom(Class)
      static boolean isAssignableFrom​(java.lang.reflect.Type superType, java.lang.reflect.Type targetType)
      the semantics is same as Class.isAssignableFrom(Class)
      static boolean isClass​(java.lang.Object type)  
      static boolean isGenericArrayType​(java.lang.Object type)  
      static boolean isObjectClass​(java.lang.Class<?> klass)  
      static boolean isObjectType​(java.lang.Object type)  
      static boolean isParameterizedType​(java.lang.Object type)  
      static boolean isTypeVariable​(java.lang.Object type)  
      static boolean isWildcardType​(java.lang.Object type)  
      protected static java.util.function.Predicate parameterizedTypePredicate​(java.util.function.Predicate<? super java.lang.reflect.ParameterizedType>... predicates)  
      static java.lang.reflect.Type resolveActualTypeArgument​(java.lang.reflect.Type type, java.lang.reflect.Type baseType, int index)
      Resolve the actual type parameters from the specified type based on some type
      static java.lang.Class resolveActualTypeArgumentClass​(java.lang.reflect.Type type, java.lang.Class baseType, int index)
      Resolve the class of actual type parameter from the specified type and index based on some type
      static java.util.List<java.lang.Class> resolveActualTypeArgumentClasses​(java.lang.reflect.Type type, java.lang.reflect.Type baseType)
      Resolve the classes of actual type parameters from the specified type based on some type
      static java.util.List<java.lang.reflect.Type> resolveActualTypeArguments​(java.lang.reflect.Type type, java.lang.Class baseClass)  
      static java.util.List<java.lang.reflect.Type> resolveActualTypeArguments​(java.lang.reflect.Type type, java.lang.reflect.Type baseType)
      Resolve the actual type parameters from the specified type based on some type
      static java.util.List<java.lang.Class<?>> resolveTypeArgumentClasses​(java.lang.Class<?> targetClass)  
      static java.util.List<java.lang.reflect.Type> resolveTypeArguments​(java.lang.Class<?> targetClass)  
      protected static java.util.List<java.lang.reflect.Type> resolveTypeArguments​(java.lang.reflect.Type... types)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • NON_OBJECT_TYPE_FILTER

        public static final java.util.function.Predicate<? super java.lang.reflect.Type> NON_OBJECT_TYPE_FILTER
      • NON_OBJECT_CLASS_FILTER

        public static final java.util.function.Predicate<? super java.lang.Class<?>> NON_OBJECT_CLASS_FILTER
      • TYPE_VARIABLE_FILTER

        public static final java.util.function.Predicate<? super java.lang.reflect.Type> TYPE_VARIABLE_FILTER
      • PARAMETERIZED_TYPE_FILTER

        public static final java.util.function.Predicate<? super java.lang.reflect.Type> PARAMETERIZED_TYPE_FILTER
      • WILDCARD_TYPE_FILTER

        public static final java.util.function.Predicate<? super java.lang.reflect.Type> WILDCARD_TYPE_FILTER
      • GENERIC_ARRAY_TYPE_FILTER

        public static final java.util.function.Predicate<? super java.lang.reflect.Type> GENERIC_ARRAY_TYPE_FILTER
      • RESOLVED_GENERIC_TYPES_CACHE_SIZE_PROPERTY_NAME

        public static final java.lang.String RESOLVED_GENERIC_TYPES_CACHE_SIZE_PROPERTY_NAME
        See Also:
        Constant Field Values
    • Method Detail

      • isClass

        public static boolean isClass​(java.lang.Object type)
      • isObjectClass

        public static boolean isObjectClass​(java.lang.Class<?> klass)
      • isObjectType

        public static boolean isObjectType​(java.lang.Object type)
      • isParameterizedType

        public static boolean isParameterizedType​(java.lang.Object type)
      • isTypeVariable

        public static boolean isTypeVariable​(java.lang.Object type)
      • isWildcardType

        public static boolean isWildcardType​(java.lang.Object type)
      • isGenericArrayType

        public static boolean isGenericArrayType​(java.lang.Object type)
      • isActualType

        public static boolean isActualType​(java.lang.reflect.Type type)
      • getRawType

        public static java.lang.reflect.Type getRawType​(java.lang.reflect.Type type)
      • getRawClass

        public static java.lang.Class<?> getRawClass​(java.lang.reflect.Type type)
      • isAssignableFrom

        public static boolean isAssignableFrom​(java.lang.reflect.Type superType,
                                               java.lang.reflect.Type targetType)
        the semantics is same as Class.isAssignableFrom(Class)
        Parameters:
        superType - the super type
        targetType - the target type
        Returns:
        see Class.isAssignableFrom(Class)
      • isAssignableFrom

        public static boolean isAssignableFrom​(java.lang.Class<?> superClass,
                                               java.lang.reflect.Type targetType)
        the semantics is same as Class.isAssignableFrom(Class)
        Parameters:
        superClass - the super class
        targetType - the target type
        Returns:
        see Class.isAssignableFrom(Class)
      • isAssignableFrom

        protected static boolean isAssignableFrom​(java.lang.Class<?> superType,
                                                  java.lang.Class<?> targetType)
        the semantics is same as Class.isAssignableFrom(Class)
        Parameters:
        superType - the super type
        targetType - the target type
        Returns:
        see Class.isAssignableFrom(Class)
      • resolveActualTypeArguments

        public static java.util.List<java.lang.reflect.Type> resolveActualTypeArguments​(java.lang.reflect.Type type,
                                                                                        java.lang.reflect.Type baseType)
        Resolve the actual type parameters from the specified type based on some type
        Parameters:
        type - the type to be resolved
        baseType - The base class or interface of type
        Returns:
        the actual type parameters
      • resolveActualTypeArgument

        public static java.lang.reflect.Type resolveActualTypeArgument​(java.lang.reflect.Type type,
                                                                       java.lang.reflect.Type baseType,
                                                                       int index)
        Resolve the actual type parameters from the specified type based on some type
        Parameters:
        type - the type to be resolved
        baseType - The base class or interface of type
        Returns:
        the actual type parameters
      • resolveActualTypeArgumentClasses

        public static java.util.List<java.lang.Class> resolveActualTypeArgumentClasses​(java.lang.reflect.Type type,
                                                                                       java.lang.reflect.Type baseType)
        Resolve the classes of actual type parameters from the specified type based on some type
        Parameters:
        type - the type to be resolved
        baseType - The base class or interface of type
        Returns:
        the read-only List classes of the actual type parameters
      • resolveActualTypeArgumentClass

        public static java.lang.Class resolveActualTypeArgumentClass​(java.lang.reflect.Type type,
                                                                     java.lang.Class baseType,
                                                                     int index)
        Resolve the class of actual type parameter from the specified type and index based on some type
        Parameters:
        type - the type to be resolved
        baseType - The base class or interface of type
        index - the index of actual type parameter
        Returns:
        the read-only List classes of the actual type parameters
      • doResolveActualTypeArgumentClasses

        protected static java.util.List<java.lang.Class> doResolveActualTypeArgumentClasses​(java.lang.reflect.Type type,
                                                                                            java.lang.reflect.Type baseType)
      • doResolveActualTypeArguments

        protected static java.util.List<java.lang.reflect.Type> doResolveActualTypeArguments​(java.lang.reflect.Type type,
                                                                                             java.lang.reflect.Type baseType)
      • resolveActualTypeArguments

        public static java.util.List<java.lang.reflect.Type> resolveActualTypeArguments​(java.lang.reflect.Type type,
                                                                                        java.lang.Class baseClass)
      • doResolveActualTypeArguments

        protected static java.util.List<java.lang.reflect.Type> doResolveActualTypeArguments​(java.lang.reflect.Type type,
                                                                                             java.lang.Class baseClass)
      • getAllGenericSuperclasses

        public static java.util.List<java.lang.reflect.Type> getAllGenericSuperclasses​(java.lang.reflect.Type type)
        Get all generic super types from the specified type
        Parameters:
        type - the specified type
        Returns:
        a non-null read-only List of types
        See Also:
        Class.getGenericSuperclass()
      • getAllGenericInterfaces

        public static java.util.List<java.lang.reflect.Type> getAllGenericInterfaces​(java.lang.reflect.Type type)
        Get all generic super interfaces from the specified type
        Parameters:
        type - the specified type
        Returns:
        a non-null read-only List of types
        See Also:
        Class.getGenericInterfaces()
      • getParameterizedTypes

        @Nonnull
        public static java.util.List<java.lang.reflect.ParameterizedType> getParameterizedTypes​(java.lang.reflect.Type type)
        Get the parameterized types(including self-type, super classes and interfaces)
        Parameters:
        type - the specified type
        Returns:
        a non-null read-only List of types, whose type only is ParameterizedType
      • getAllParameterizedTypes

        @Nonnull
        public static java.util.List<java.lang.reflect.ParameterizedType> getAllParameterizedTypes​(java.lang.reflect.Type type)
        Get all parameterized types(including self-type, super classes and interfaces) hierarchically
        Parameters:
        type - the specified type
        Returns:
        a non-null read-only List of types, whose type only is ParameterizedType
      • getHierarchicalTypes

        public static java.util.List<java.lang.reflect.Type> getHierarchicalTypes​(java.lang.reflect.Type type)
        Get all generic super types(including super classes and interfaces) hierarchically
        Parameters:
        type -
        Returns:
        a non-null read-only List of types, which contains getAllGenericSuperclasses(Type) + getAllGenericInterfaces(Type)
      • getAllTypes

        @Nonnull
        public static java.util.List<java.lang.reflect.Type> getAllTypes​(java.lang.reflect.Type type)
        Get all generic types(including self-type, super classes and interfaces) hierarchically.
        Parameters:
        type - the specified type
        Returns:
        a non-null read-only List of types , which contains type + getAllGenericSuperclasses(Type) + getAllGenericInterfaces(Type)
      • findAllGenericSuperclasses

        public static java.util.List<java.lang.reflect.Type> findAllGenericSuperclasses​(java.lang.reflect.Type type,
                                                                                        java.util.function.Predicate<? super java.lang.reflect.Type>... typeFilters)
        Find all generic super types from the specified type, which are filtered by typeFilters
        Parameters:
        type - the specified type
        typeFilters - the filters for type (optional)
        Returns:
        non-null read-only Set
        See Also:
        Class.getGenericSuperclass()
      • findAllGenericInterfaces

        public static java.util.List<java.lang.reflect.Type> findAllGenericInterfaces​(java.lang.reflect.Type type,
                                                                                      java.util.function.Predicate<? super java.lang.reflect.Type>... typeFilters)
        Find all super interfaces from the specified type
        Parameters:
        type - the specified type
        typeFilters - the filters for type
        Returns:
        non-null read-only Set
        See Also:
        Class.getGenericInterfaces()
      • findParameterizedTypes

        public static java.util.List<java.lang.reflect.ParameterizedType> findParameterizedTypes​(java.lang.reflect.Type type,
                                                                                                 java.util.function.Predicate<? super java.lang.reflect.ParameterizedType>... typeFilters)
        Find the specified types' generic types(including super classes and interfaces) that are assignable from ParameterizedType interface
        Parameters:
        type - the specified type
        typeFilters - one or more Predicates to filter the ParameterizedType instance
        Returns:
        non-null read-only List
      • findAllParameterizedTypes

        public static java.util.List<java.lang.reflect.ParameterizedType> findAllParameterizedTypes​(java.lang.reflect.Type type,
                                                                                                    java.util.function.Predicate<? super java.lang.reflect.ParameterizedType>... typeFilters)
        Find all specified types' generic types(including super classes and interfaces) hierarchically that are assignable from ParameterizedType interface
        Parameters:
        type - the specified type
        typeFilters - one or more Predicates to filter the ParameterizedType instance
        Returns:
        non-null read-only List
      • findHierarchicalTypes

        public static java.util.List<java.lang.reflect.Type> findHierarchicalTypes​(java.lang.reflect.Type type,
                                                                                   java.util.function.Predicate<? super java.lang.reflect.Type>... typeFilters)
      • findAllTypes

        public static java.util.List<java.lang.reflect.Type> findAllTypes​(java.lang.reflect.Type type,
                                                                          java.util.function.Predicate<? super java.lang.reflect.Type>... typeFilters)
      • parameterizedTypePredicate

        protected static java.util.function.Predicate parameterizedTypePredicate​(java.util.function.Predicate<? super java.lang.reflect.ParameterizedType>... predicates)
      • findTypes

        protected static java.util.List<java.lang.reflect.Type> findTypes​(java.lang.reflect.Type type,
                                                                          boolean includeSelf,
                                                                          boolean includeHierarchicalTypes,
                                                                          boolean includeGenericSuperclass,
                                                                          boolean includeGenericInterfaces,
                                                                          java.util.function.Predicate<? super java.lang.reflect.Type>... typeFilters)
      • doGetHierarchicalTypes

        protected static java.util.List<java.lang.reflect.Type> doGetHierarchicalTypes​(java.lang.reflect.Type type)
      • getClassName

        public static java.lang.String getClassName​(java.lang.reflect.Type type)
      • getClassNames

        public static java.util.Set<java.lang.String> getClassNames​(java.lang.Iterable<? extends java.lang.reflect.Type> types)
      • resolveTypeArguments

        public static java.util.List<java.lang.reflect.Type> resolveTypeArguments​(java.lang.Class<?> targetClass)
      • resolveTypeArguments

        protected static java.util.List<java.lang.reflect.Type> resolveTypeArguments​(java.lang.reflect.Type... types)
      • getActualTypeArguments

        protected static java.util.List<java.lang.reflect.Type> getActualTypeArguments​(java.lang.reflect.Type type)
      • resolveTypeArgumentClasses

        public static java.util.List<java.lang.Class<?>> resolveTypeArgumentClasses​(java.lang.Class<?> targetClass)
      • asClass

        public static java.lang.Class<?> asClass​(java.lang.reflect.Type type)
      • asGenericArrayType

        public static java.lang.reflect.GenericArrayType asGenericArrayType​(java.lang.reflect.Type type)
      • asParameterizedType

        public static java.lang.reflect.ParameterizedType asParameterizedType​(java.lang.reflect.Type type)
      • asTypeVariable

        public static java.lang.reflect.TypeVariable asTypeVariable​(java.lang.reflect.Type type)
      • asWildcardType

        public static java.lang.reflect.WildcardType asWildcardType​(java.lang.reflect.Type type)
      • getComponentType

        public static java.lang.reflect.Type getComponentType​(java.lang.reflect.Type type)
      • getTypeName

        public static java.lang.String getTypeName​(@Nullable
                                                   java.lang.reflect.Type type)
        Get the type name safely
        Parameters:
        type - the Type
        Returns:
        null if type is null
      • getTypeNames

        @Nonnull
        public static java.lang.String[] getTypeNames​(@Nullable
                                                      java.lang.reflect.Type... types)
                                               throws java.lang.IllegalArgumentException
        Get the type names of the specified types
        Parameters:
        types - the Type array
        Returns:
        non-null
        Throws:
        java.lang.IllegalArgumentException - if any element of types is null