类 ClassUtils
java.lang.Object
com.alibaba.ageiport.common.utils.ClassUtils
类工具类
- 作者:
- xuechao.sxc
-
字段概要
字段 -
构造器概要
构造器 -
方法概要
修饰符和类型方法说明static Class<?>classForName(String className) static Class<?>Same asClass.forName(), except that it works for primitive types.static Class<?>static Class<?>forName(String name, ClassLoader classLoader) Replacement forClass.forName()that also returns Class instances for primitives (like "int") and array class names (like "String[]").static Class<?>forNameWithCallerClassLoader(String name, Class<?> caller) static ClassLoadergetCallerClassLoader(Class<?> caller) static <T> Class<T>getClass(T obj) null安全的获取对象类型static Class<?>[]getClasses(Object... objects) 获得对象数组的类数组static ClassLoaderReturn the default ClassLoader to use: typically the thread context ClassLoader, if available; the ClassLoader that loaded the ClassUtils class will be used as fallback.static ClassLoadergetClassLoader(Class<?> clazz) get class loaderstatic StringgetClassName(Class<?> clazz, boolean isSimple) 获取类名
类名并不包含“.class”这个扩展名
例如:ClassUtil这个类static StringgetClassName(Object obj, boolean isSimple) 获取类名static FieldgetDeclaredField(Class<?> clazz, String fieldName) 查找指定类中的所有字段(包括非public字段), 字段不存在则返回nullstatic Field[]getDeclaredFields(Class<?> clazz) 查找指定类中的所有字段(包括非public字段)static MethodgetDeclaredMethod(Class<?> clazz, String methodName, Class<?>... parameterTypes) 查找指定类中的所有方法(包括非public方法),也包括父类和Object类的方法 找不到方法会返回nullgetDeclaredMethodNames(Class<?> clazz) 获得指定类中的Public方法名
去重重载的方法static MethodgetDeclaredMethodOfObj(Object obj, String methodName, Object... args) 查找指定对象中的所有方法(包括非public方法),也包括父对象和Object类的方法static Method[]getDeclaredMethods(Class<?> clazz) 获得声明的所有方法,包括本类及其父类和接口的所有方法和Object类的方法static ObjectgetDefaultValue(Class<?> clazz) 获取指定类型分的默认值
默认值规则为:static Object[]getDefaultValues(Class<?>... classes) 获得默认值列表static Class<?>getEnclosingClass(Class<?> clazz) 获得外围类
返回定义此类或匿名类所在的类,如果类本身是在包中定义的,返回nullstatic StringgetPackage(Class<?> clazz) 获得给定类所在包的名称
例如:static MethodgetPublicMethod(Class<?> clazz, String methodName, Class<?>... paramTypes) 查找指定Public方法 如果找不到对应的方法或方法不为public的则返回nullgetPublicMethodNames(Class<?> clazz) 获得指定类中的Public方法名
去重重载的方法static Method[]getPublicMethods(Class<?> clazz) 获得本类及其父类所有Public方法getPublicMethods(Class<?> clazz, Filter<Method> filter) 获得指定类过滤后的Public方法列表getPublicMethods(Class<?> clazz, Method... excludeMethods) 获得指定类过滤后的Public方法列表getPublicMethods(Class<?> clazz, String... excludeMethodNames) 获得指定类过滤后的Public方法列表static StringgetSimpleClassName(String qualifiedName) get simple class name from qualified class namestatic Class<?>getTypeArgument(Class<?> clazz) 获得给定类的第一个泛型参数static Class<?>getTypeArgument(Class<?> clazz, int index) 获得给定类的泛型参数static booleanisAbstract(Class<?> clazz) 是否为抽象类static booleanisAllAssignableFrom(Class<?>[] types1, Class<?>[] types2) 比较判断types1和types2两组类,如果types1中所有的类都与types2对应位置的类相同,或者是其父类或接口,则返回truestatic booleanisAssignable(Class<?> targetType, Class<?> sourceType) 检查目标类是否可以从原类转化
转化包括:
1、原类是对象,目标类型是原类型实现的接口
2、目标类型是原类型的父类
3、两者是原始类型或者包装类型(相互转换)static booleanisBasicType(Class<?> clazz) 是否为基本类型(包括包装类和原始类)static boolean判断类是否为枚举类型static booleanisJavaLanguageInterface(Class<?> ifc) Determine whether the given interface is a common Java language interface:Serializable,Externalizable,Closeable,AutoCloseable,Cloneable,Comparable- all of which can be ignored when looking for 'primary' user-level interfaces.static booleanisNormalClass(Class<?> clazz) 是否为标准的类
这个类必须:static booleanisNotPublic(Class<?> clazz) 指定类是否为非publicstatic booleanisNotPublic(Method method) 指定方法是否为非publicstatic booleanisPrimitiveWrapper(Class<?> clazz) 是否为包装类型static boolean指定类是否为Publicstatic boolean指定方法是否为Publicstatic booleanisSimpleTypeOrArray(Class<?> clazz) 是否简单值类型或简单值类型的数组
包括:原始类型,、String、other CharSequence, a Number, a Date, a URI, a URL, a Locale or a Class及其数组static booleanisSimpleValueType(Class<?> clazz) 是否为简单值类型
包括:static boolean是否为静态方法static booleanisTopLevelClass(Class<?> clazz) 是否为顶层类,即定义在包中的类,而非定义在类中的内部类static Class<?>Resolve the given class name as primitive class, if appropriate, according to the JVM's naming rules for primitive classes.static MethodsetAccessible(Method method) 设置方法为可访问static Stringstatic URI
-
字段详细资料
-
构造器详细资料
-
ClassUtils
public ClassUtils()
-
-
方法详细资料
-
classForName
-
getClass
null安全的获取对象类型- 类型参数:
T- 对象类型- 返回:
- 对象类型,提供对象如果为
null返回null
-
getEnclosingClass
获得外围类
返回定义此类或匿名类所在的类,如果类本身是在包中定义的,返回null- 参数:
clazz- 类- 返回:
- 外围类
-
isTopLevelClass
是否为顶层类,即定义在包中的类,而非定义在类中的内部类- 参数:
clazz- 类- 返回:
- 是否为顶层类
-
getClassName
获取类名- 参数:
obj- 获取类名对象isSimple- 是否简单类名,如果为true,返回不带包名的类名- 返回:
- 类名
-
getClassName
获取类名
类名并不包含“.class”这个扩展名
例如:ClassUtil这个类- 参数:
clazz- 类isSimple- 是否简单类名,如果为true,返回不带包名的类名- 返回:
- 类名
-
getSimpleClassName
get simple class name from qualified class name -
getClasses
获得对象数组的类数组- 参数:
objects- 对象数组,如果数组中存在null元素,则此元素被认为是Object类型- 返回:
- 类数组
-
getPublicMethodNames
获得指定类中的Public方法名
去重重载的方法- 参数:
clazz- 类- 返回:
- 方法名Set
-
getPublicMethods
获得本类及其父类所有Public方法- 参数:
clazz- 查找方法的类- 返回:
- 过滤后的方法列表
-
getPublicMethods
获得指定类过滤后的Public方法列表- 参数:
clazz- 查找方法的类filter- 过滤器- 返回:
- 过滤后的方法列表
-
getPublicMethods
获得指定类过滤后的Public方法列表- 参数:
clazz- 查找方法的类excludeMethods- 不包括的方法- 返回:
- 过滤后的方法列表
-
getPublicMethods
获得指定类过滤后的Public方法列表- 参数:
clazz- 查找方法的类excludeMethodNames- 不包括的方法名列表- 返回:
- 过滤后的方法列表
-
getPublicMethod
查找指定Public方法 如果找不到对应的方法或方法不为public的则返回null- 参数:
clazz- 类methodName- 方法名paramTypes- 参数类型- 返回:
- 方法
- 抛出:
SecurityException- 无权访问抛出异常
-
getDeclaredMethodNames
获得指定类中的Public方法名
去重重载的方法- 参数:
clazz- 类- 返回:
- 方法名Set
-
getDeclaredMethods
获得声明的所有方法,包括本类及其父类和接口的所有方法和Object类的方法- 参数:
clazz- 类- 返回:
- 方法数组
-
getDeclaredMethodOfObj
查找指定对象中的所有方法(包括非public方法),也包括父对象和Object类的方法- 参数:
obj- 被查找的对象methodName- 方法名args- 参数- 返回:
- 方法
- 抛出:
SecurityException- 无访问权限抛出异常
-
getDeclaredMethod
public static Method getDeclaredMethod(Class<?> clazz, String methodName, Class<?>... parameterTypes) 查找指定类中的所有方法(包括非public方法),也包括父类和Object类的方法 找不到方法会返回null- 参数:
clazz- 被查找的类methodName- 方法名parameterTypes- 参数类型- 返回:
- 方法
- 抛出:
SecurityException- 无访问权限抛出异常
-
getDeclaredField
查找指定类中的所有字段(包括非public字段), 字段不存在则返回null- 参数:
clazz- 被查找字段的类fieldName- 字段名- 返回:
- 字段
- 抛出:
SecurityException- 安全异常
-
getDeclaredFields
查找指定类中的所有字段(包括非public字段)- 参数:
clazz- 被查找字段的类- 返回:
- 字段
- 抛出:
SecurityException- 安全异常
-
isAllAssignableFrom
比较判断types1和types2两组类,如果types1中所有的类都与types2对应位置的类相同,或者是其父类或接口,则返回true- 参数:
types1- 类组1types2- 类组2- 返回:
- 是否相同、父类或接口
-
isPrimitiveWrapper
是否为包装类型- 参数:
clazz- 类- 返回:
- 是否为包装类型
-
isBasicType
是否为基本类型(包括包装类和原始类)- 参数:
clazz- 类- 返回:
- 是否为基本类型
-
isSimpleTypeOrArray
是否简单值类型或简单值类型的数组
包括:原始类型,、String、other CharSequence, a Number, a Date, a URI, a URL, a Locale or a Class及其数组- 参数:
clazz- 属性类- 返回:
- 是否简单值类型或简单值类型的数组
-
isSimpleValueType
是否为简单值类型
包括:原始类型 String、other CharSequence Number Date URI URL Locale Class- 参数:
clazz- 类- 返回:
- 是否为简单值类型
-
isAssignable
检查目标类是否可以从原类转化
转化包括:
1、原类是对象,目标类型是原类型实现的接口
2、目标类型是原类型的父类
3、两者是原始类型或者包装类型(相互转换)- 参数:
targetType- 目标类型sourceType- 原类型- 返回:
- 是否可转化
-
isPublic
指定类是否为Public- 参数:
clazz- 类- 返回:
- 是否为public
-
isPublic
指定方法是否为Public- 参数:
method- 方法- 返回:
- 是否为public
-
isNotPublic
指定类是否为非public- 参数:
clazz- 类- 返回:
- 是否为非public
-
isNotPublic
指定方法是否为非public- 参数:
method- 方法- 返回:
- 是否为非public
-
isStatic
是否为静态方法- 参数:
method- 方法- 返回:
- 是否为静态方法
-
setAccessible
设置方法为可访问- 参数:
method- 方法- 返回:
- 方法
-
isAbstract
是否为抽象类- 参数:
clazz- 类- 返回:
- 是否为抽象类
-
isNormalClass
是否为标准的类
这个类必须:1、非接口 2、非抽象类 3、非Enum枚举 4、非数组 5、非注解 6、非原始类型(int, long等)
- 参数:
clazz- 类- 返回:
- 是否为标准类
-
isEnum
判断类是否为枚举类型- 参数:
clazz- 类- 返回:
- 是否为枚举类型
-
getTypeArgument
获得给定类的第一个泛型参数- 参数:
clazz- 被检查的类,必须是已经确定泛型类型的类- 返回:
Class
-
getTypeArgument
获得给定类的泛型参数- 参数:
clazz- 被检查的类,必须是已经确定泛型类型的类index- 泛型类型的索引号,即第几个泛型类型- 返回:
Class
-
getPackage
获得给定类所在包的名称
例如:- 参数:
clazz- 类- 返回:
- 包名
-
isJavaLanguageInterface
Determine whether the given interface is a common Java language interface:Serializable,Externalizable,Closeable,AutoCloseable,Cloneable,Comparable- all of which can be ignored when looking for 'primary' user-level interfaces. Common characteristics: no service-level operations, no bean property methods, no default methods.- 参数:
ifc- the interface to check- 从以下版本开始:
- 5.0.3
-
getDefaultValue
获取指定类型分的默认值
默认值规则为:1、如果为原始类型,返回0 2、非原始类型返回
null- 参数:
clazz- 类- 返回:
- 默认值
-
getDefaultValues
获得默认值列表- 参数:
classes- 值类型- 返回:
- 默认值列表
-
getCallerClassLoader
-
getClassLoader
get class loader- 参数:
clazz-- 返回:
- class loader
-
getClassLoader
Return the default ClassLoader to use: typically the thread context ClassLoader, if available; the ClassLoader that loaded the ClassUtils class will be used as fallback.Call this method if you intend to use the thread context ClassLoader in a scenario where you absolutely need a non-null ClassLoader reference: for example, for class path resource loading (but not necessarily for
Class.forName, which accepts anullClassLoader reference as well).- 返回:
- the default ClassLoader (never
null) - 另请参阅:
-
forName
Same asClass.forName(), except that it works for primitive types. -
forNameWithCallerClassLoader
public static Class<?> forNameWithCallerClassLoader(String name, Class<?> caller) throws ClassNotFoundException -
forName
-
forName
public static Class<?> forName(String name, ClassLoader classLoader) throws ClassNotFoundException, LinkageError Replacement forClass.forName()that also returns Class instances for primitives (like "int") and array class names (like "String[]").- 参数:
name- the name of the ClassclassLoader- the class loader to use (may benull, which indicates the default class loader)- 返回:
- Class instance for the supplied name
- 抛出:
ClassNotFoundException- if the class was not foundLinkageError- if the class file could not be loaded- 另请参阅:
-
resolvePrimitiveClassName
Resolve the given class name as primitive class, if appropriate, according to the JVM's naming rules for primitive classes.Also supports the JVM's internal class names for primitive arrays. Does not support the "[]" suffix notation for primitive arrays; this is only supported by
forName(java.lang.String).- 参数:
name- the name of the potentially primitive class- 返回:
- the primitive class, or
nullif the name does not denote a primitive class or primitive array class
-
toURI
-
toString
-