Package io.microsphere.reflect
Class TypeUtils
- java.lang.Object
-
- io.microsphere.reflect.TypeUtils
-
-
Field Summary
Fields Modifier and Type Field Description static java.util.function.Predicate<? super java.lang.reflect.Type>GENERIC_ARRAY_TYPE_FILTERstatic java.util.function.Predicate<? super java.lang.Class<?>>NON_OBJECT_CLASS_FILTERstatic java.util.function.Predicate<? super java.lang.reflect.Type>NON_OBJECT_TYPE_FILTERstatic java.util.function.Predicate<? super java.lang.reflect.Type>PARAMETERIZED_TYPE_FILTERstatic java.lang.StringRESOLVED_GENERIC_TYPES_CACHE_SIZE_PROPERTY_NAMEstatic java.util.function.Predicate<? super java.lang.reflect.Type>TYPE_VARIABLE_FILTERstatic java.util.function.Predicate<? super java.lang.reflect.Type>WILDCARD_TYPE_FILTER
-
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.GenericArrayTypeasGenericArrayType(java.lang.reflect.Type type)static java.lang.reflect.ParameterizedTypeasParameterizedType(java.lang.reflect.Type type)static java.lang.reflect.TypeVariableasTypeVariable(java.lang.reflect.Type type)static java.lang.reflect.WildcardTypeasWildcardType(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 typestatic 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 bytypeFiltersstatic 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 fromParameterizedTypeinterfacestatic 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 fromParameterizedTypeinterfaceprotected 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 typestatic java.util.List<java.lang.reflect.Type>getAllGenericSuperclasses(java.lang.reflect.Type type)Get all generic super types from the specified typestatic java.util.List<java.lang.reflect.ParameterizedType>getAllParameterizedTypes(java.lang.reflect.Type type)Get allparameterized types(including self-type, super classes and interfaces) hierarchicallystatic 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.StringgetClassName(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.TypegetComponentType(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) hierarchicallystatic java.util.List<java.lang.reflect.ParameterizedType>getParameterizedTypes(java.lang.reflect.Type type)Get theparameterized types(including self-type, super classes and interfaces)static java.lang.Class<?>getRawClass(java.lang.reflect.Type type)static java.lang.reflect.TypegetRawType(java.lang.reflect.Type type)static java.lang.StringgetTypeName(java.lang.reflect.Type type)Get the type name safelystatic java.lang.String[]getTypeNames(java.lang.reflect.Type... types)Get the type names of the specifiedtypesstatic booleanisActualType(java.lang.reflect.Type type)protected static booleanisAssignableFrom(java.lang.Class<?> superType, java.lang.Class<?> targetType)the semantics is same asClass.isAssignableFrom(Class)static booleanisAssignableFrom(java.lang.Class<?> superClass, java.lang.reflect.Type targetType)the semantics is same asClass.isAssignableFrom(Class)static booleanisAssignableFrom(java.lang.reflect.Type superType, java.lang.reflect.Type targetType)the semantics is same asClass.isAssignableFrom(Class)static booleanisClass(java.lang.Object type)static booleanisGenericArrayType(java.lang.Object type)static booleanisObjectClass(java.lang.Class<?> klass)static booleanisObjectType(java.lang.Object type)static booleanisParameterizedType(java.lang.Object type)static booleanisTypeVariable(java.lang.Object type)static booleanisWildcardType(java.lang.Object type)protected static java.util.function.PredicateparameterizedTypePredicate(java.util.function.Predicate<? super java.lang.reflect.ParameterizedType>... predicates)static java.lang.reflect.TyperesolveActualTypeArgument(java.lang.reflect.Type type, java.lang.reflect.Type baseType, int index)Resolve the actual type parameters from the specified type based on some typestatic java.lang.ClassresolveActualTypeArgumentClass(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 typestatic 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 typestatic 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 typestatic 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)
-
-
-
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 asClass.isAssignableFrom(Class)- Parameters:
superType- the super typetargetType- 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 asClass.isAssignableFrom(Class)- Parameters:
superClass- the super classtargetType- 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 asClass.isAssignableFrom(Class)- Parameters:
superType- the super typetargetType- 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 resolvedbaseType- The base class or interface oftype- 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 resolvedbaseType- The base class or interface oftype- 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 resolvedbaseType- The base class or interface oftype- Returns:
- the read-only
Listclasses 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 resolvedbaseType- The base class or interface oftypeindex- the index of actual type parameter- Returns:
- the read-only
Listclasses 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
Listoftypes - 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
Listoftypes - See Also:
Class.getGenericInterfaces()
-
getParameterizedTypes
@Nonnull public static java.util.List<java.lang.reflect.ParameterizedType> getParameterizedTypes(java.lang.reflect.Type type)
Get theparameterized types(including self-type, super classes and interfaces)- Parameters:
type- the specified type- Returns:
- a non-null read-only
Listof types, whose type only isParameterizedType
-
getAllParameterizedTypes
@Nonnull public static java.util.List<java.lang.reflect.ParameterizedType> getAllParameterizedTypes(java.lang.reflect.Type type)
Get allparameterized types(including self-type, super classes and interfaces) hierarchically- Parameters:
type- the specified type- Returns:
- a non-null read-only
Listof types, whose type only isParameterizedType
-
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
Listoftypes, which containsgetAllGenericSuperclasses(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
Listoftypes, which containstype+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 bytypeFilters- Parameters:
type- the specified typetypeFilters- 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 typetypeFilters- 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 fromParameterizedTypeinterface- Parameters:
type- the specified typetypeFilters- one or morePredicates to filter theParameterizedTypeinstance- 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 fromParameterizedTypeinterface- Parameters:
type- the specified typetypeFilters- one or morePredicates to filter theParameterizedTypeinstance- 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- theType- Returns:
nulliftypeis 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 specifiedtypes- Parameters:
types- theTypearray- Returns:
- non-null
- Throws:
java.lang.IllegalArgumentException- if any element oftypesisnull
-
-