public class ClassUtil
extends java.lang.Object
| 构造器和说明 |
|---|
ClassUtil() |
| 限定符和类型 | 方法和说明 |
|---|---|
static boolean |
equals(java.lang.Class<?> clazz,
java.lang.String className,
boolean ignoreCase)
指定类是否与给定的类名相同
|
static <T> java.lang.Class<T> |
getClass(T obj)
null安全的获取对象类型 |
static java.lang.Class<?>[] |
getClasses(java.lang.Object... objects)
获得对象数组的类数组
|
static java.lang.ClassLoader |
getClassLoader()
获取
ClassLoader获取顺序如下: 1、获取当前线程的ContextClassLoader 2、获取 ClassUtil类对应的ClassLoader
3、获取系统ClassLoader(ClassLoader.getSystemClassLoader())
|
static java.lang.String |
getClassName(java.lang.Class<?> clazz,
boolean isSimple)
获取类名
类名并不包含“.class”这个扩展名 例如:ClassUtil这个类 isSimple为false: "com.xiaoleilu.hutool.util.ClassUtil" isSimple为true: "ClassUtil" |
static java.lang.String |
getClassName(java.lang.Object obj,
boolean isSimple)
获取类名
|
static java.lang.String |
getClassPath()
获得ClassPath,将编码后的中文路径解码为原字符
这个ClassPath路径会文件路径被标准化处理 |
static java.lang.String |
getClassPath(boolean isEncoded)
获得ClassPath,这个ClassPath路径会文件路径被标准化处理
|
static java.util.Set<java.lang.String> |
getClassPathResources()
获得ClassPath,不解码路径中的特殊字符(例如空格和中文)
|
static java.util.Set<java.lang.String> |
getClassPathResources(boolean isDecode)
获得ClassPath
|
static java.util.Set<java.lang.String> |
getClassPaths(java.lang.String packageName)
获得ClassPath,不解码路径中的特殊字符(例如空格和中文)
|
static java.util.Set<java.lang.String> |
getClassPaths(java.lang.String packageName,
boolean isDecode)
获得ClassPath
|
static java.net.URL |
getClassPathURL()
获得ClassPath URL
|
static java.lang.ClassLoader |
getContextClassLoader()
获取当前线程的
ClassLoader |
static java.lang.reflect.Field |
getDeclaredField(java.lang.Class<?> clazz,
java.lang.String fieldName)
查找指定类中的所有字段(包括非public字段), 字段不存在则返回
null |
static java.lang.reflect.Field[] |
getDeclaredFields(java.lang.Class<?> clazz)
查找指定类中的所有字段(包括非public字段)
|
static java.lang.reflect.Method |
getDeclaredMethod(java.lang.Class<?> clazz,
java.lang.String methodName,
java.lang.Class<?>... parameterTypes)
查找指定类中的所有方法(包括非public方法),也包括父类和Object类的方法 找不到方法会返回
null |
static java.util.Set<java.lang.String> |
getDeclaredMethodNames(java.lang.Class<?> clazz)
获得指定类中的Public方法名
去重重载的方法 |
static java.lang.reflect.Method |
getDeclaredMethodOfObj(java.lang.Object obj,
java.lang.String methodName,
java.lang.Object... args)
查找指定对象中的所有方法(包括非public方法),也包括父对象和Object类的方法
|
static java.lang.reflect.Method[] |
getDeclaredMethods(java.lang.Class<?> clazz)
获得声明的所有方法,包括本类及其父类和接口的所有方法和Object类的方法
|
static java.lang.Object |
getDefaultValue(java.lang.Class<?> clazz)
获取指定类型分的默认值
默认值规则为: 1、如果为原始类型,返回0 2、非原始类型返回 null
|
static java.lang.Object[] |
getDefaultValues(java.lang.Class<?>... classes)
获得默认值列表
|
static java.lang.String[] |
getJavaClassPaths() |
static java.lang.String |
getPackage(java.lang.Class<?> clazz)
获得给定类所在包的名称
例如: com.xiaoleilu.hutool.util.ClassUtil =》 com.xiaoleilu.hutool.util |
static java.lang.String |
getPackagePath(java.lang.Class<?> clazz)
获得给定类所在包的路径
例如: com.xiaoleilu.hutool.util.ClassUtil =》 com/xiaoleilu/hutool/util |
static java.lang.reflect.Method |
getPublicMethod(java.lang.Class<?> clazz,
java.lang.String methodName,
java.lang.Class<?>... paramTypes)
查找指定Public方法 如果找不到对应的方法或方法不为public的则返回
null |
static java.util.Set<java.lang.String> |
getPublicMethodNames(java.lang.Class<?> clazz)
获得指定类中的Public方法名
去重重载的方法 |
static java.lang.reflect.Method[] |
getPublicMethods(java.lang.Class<?> clazz)
获得本类及其父类所有Public方法
|
static java.util.List<java.lang.reflect.Method> |
getPublicMethods(java.lang.Class<?> clazz,
Filter<java.lang.reflect.Method> filter)
获得指定类过滤后的Public方法列表
|
static java.util.List<java.lang.reflect.Method> |
getPublicMethods(java.lang.Class<?> clazz,
java.lang.reflect.Method... excludeMethods)
获得指定类过滤后的Public方法列表
|
static java.util.List<java.lang.reflect.Method> |
getPublicMethods(java.lang.Class<?> clazz,
java.lang.String... excludeMethodNames)
获得指定类过滤后的Public方法列表
|
static java.util.List<java.net.URL> |
getResources(java.lang.String resource)
获取指定路径下的资源列表
路径格式必须为目录格式,用/分隔,例如: config/a spring/xml |
static java.net.URL |
getResourceURL(java.lang.String resource)
获得资源的URL
路径用/分隔,例如: config/a/db.config spring/xml/test.xml |
static java.net.URL |
getResourceUrl(java.lang.String resource,
java.lang.Class<?> baseClass)
获得资源相对路径对应的URL
|
static java.lang.String |
getShortClassName(java.lang.String className)
获取完整类名的短格式如:
cn.hutool.core.util.StrUtil -》c.h.c.u.StrUtil |
static java.lang.Class<?> |
getTypeArgument(java.lang.Class<?> clazz)
获得给定类的第一个泛型参数
|
static java.lang.Class<?> |
getTypeArgument(java.lang.Class<?> clazz,
int index)
获得给定类的泛型参数
|
static <T> T |
invoke(java.lang.String classNameWithMethodName,
boolean isSingleton,
java.lang.Object... args)
执行方法
可执行Private方法,也可执行static方法 执行非static方法时,必须满足对象有默认构造方法 |
static <T> T |
invoke(java.lang.String classNameDotMethodName,
java.lang.Object[] args)
执行方法
可执行Private方法,也可执行static方法 执行非static方法时,必须满足对象有默认构造方法 非单例模式,如果是非静态方法,每次创建一个新对象 |
static <T> T |
invoke(java.lang.String className,
java.lang.String methodName,
boolean isSingleton,
java.lang.Object[] args)
执行方法
可执行Private方法,也可执行static方法 执行非static方法时,必须满足对象有默认构造方法 |
static <T> T |
invoke(java.lang.String className,
java.lang.String methodName,
java.lang.Object[] args)
执行方法
可执行Private方法,也可执行static方法 执行非static方法时,必须满足对象有默认构造方法 非单例模式,如果是非静态方法,每次创建一个新对象 |
static boolean |
isAbstract(java.lang.Class<?> clazz)
是否为抽象类
|
static boolean |
isAllAssignableFrom(java.lang.Class<?>[] types1,
java.lang.Class<?>[] types2)
比较判断types1和types2两组类,如果types1中所有的类都与types2对应位置的类相同,或者是其父类或接口,则返回
true |
static boolean |
isAssignable(java.lang.Class<?> targetType,
java.lang.Class<?> sourceType)
检查目标类是否可以从原类转化
转化包括: 1、原类是对象,目标类型是原类型实现的接口 2、目标类型是原类型的父类 3、两者是原始类型或者包装类型(相互转换) |
static boolean |
isBasicType(java.lang.Class<?> clazz)
是否为基本类型(包括包装类和原始类)
|
static boolean |
isEnum(java.lang.Class<?> clazz)
判断类是否为枚举类型
|
static boolean |
isNormalClass(java.lang.Class<?> clazz)
是否为标准的类
这个类必须: 1、非接口 2、非抽象类 3、非Enum枚举 4、非数组 5、非注解 6、非原始类型(int, long等) |
static boolean |
isNotPublic(java.lang.Class<?> clazz)
指定类是否为非public
|
static boolean |
isNotPublic(java.lang.reflect.Method method)
指定方法是否为非public
|
static boolean |
isPrimitiveWrapper(java.lang.Class<?> clazz)
是否为包装类型
|
static boolean |
isPublic(java.lang.Class<?> clazz)
指定类是否为Public
|
static boolean |
isPublic(java.lang.reflect.Method method)
指定方法是否为Public
|
static boolean |
isSimpleTypeOrArray(java.lang.Class<?> clazz)
是否简单值类型或简单值类型的数组
包括:原始类型,、String、other CharSequence, a Number, a Date, a URI, a URL, a Locale or a Class及其数组 |
static boolean |
isSimpleValueType(java.lang.Class<?> clazz)
是否为简单值类型
包括:原始类型,、String、other CharSequence, a Number, a Date, a URI, a URL, a Locale or a Class. |
static boolean |
isStatic(java.lang.reflect.Method method)
是否为静态方法
|
static <T> java.lang.Class<T> |
loadClass(java.lang.String className)
加载类并初始化
|
static <T> java.lang.Class<T> |
loadClass(java.lang.String className,
boolean isInitialized)
加载类
|
static java.util.Set<java.lang.Class<?>> |
scanPackage()
扫面该包路径下所有class文件
|
static java.util.Set<java.lang.Class<?>> |
scanPackage(java.lang.String packageName)
扫面该包路径下所有class文件
|
static java.util.Set<java.lang.Class<?>> |
scanPackage(java.lang.String packageName,
Filter<java.lang.Class<?>> classFilter)
扫面包路径下满足class过滤器条件的所有class文件,
如果包路径为 com.abs + A.class 但是输入 abs会产生classNotFoundException 因为className 应该为 com.abs.A 现在却成为abs.A,此工具类对该异常进行忽略处理,有可能是一个不完善的地方,以后需要进行修改 |
static java.util.Set<java.lang.Class<?>> |
scanPackageByAnnotation(java.lang.String packageName,
java.lang.Class<? extends java.lang.annotation.Annotation> annotationClass)
扫描指定包路径下所有包含指定注解的类
|
static java.util.Set<java.lang.Class<?>> |
scanPackageBySuper(java.lang.String packageName,
java.lang.Class<?> superClass)
扫描指定包路径下所有指定类或接口的子类或实现类
|
static java.lang.reflect.Method |
setAccessible(java.lang.reflect.Method method)
设置方法为可访问
|
public static <T> java.lang.Class<T> getClass(T obj)
null安全的获取对象类型T - 对象类型obj - 对象,如果为null 返回nullnull 返回nullpublic static java.lang.String getClassName(java.lang.Object obj,
boolean isSimple)
obj - 获取类名对象isSimple - 是否简单类名,如果为true,返回不带包名的类名public static java.lang.String getClassName(java.lang.Class<?> clazz,
boolean isSimple)
isSimple为false: "com.xiaoleilu.hutool.util.ClassUtil" isSimple为true: "ClassUtil"
clazz - 类isSimple - 是否简单类名,如果为true,返回不带包名的类名public static java.lang.String getShortClassName(java.lang.String className)
className - 类名public static java.lang.Class<?>[] getClasses(java.lang.Object... objects)
objects - 对象数组,如果数组中存在null元素,则此元素被认为是Object类型public static boolean equals(java.lang.Class<?> clazz,
java.lang.String className,
boolean ignoreCase)
clazz - 类className - 类名,可以是全类名(包含包名),也可以是简单类名(不包含包名)ignoreCase - 是否忽略大小写public static java.util.Set<java.lang.Class<?>> scanPackageByAnnotation(java.lang.String packageName,
java.lang.Class<? extends java.lang.annotation.Annotation> annotationClass)
packageName - 包路径annotationClass - 注解类ClassScaner.scanPackageByAnnotation(String, Class)public static java.util.Set<java.lang.Class<?>> scanPackageBySuper(java.lang.String packageName,
java.lang.Class<?> superClass)
packageName - 包路径superClass - 父类或接口ClassScaner.scanPackageBySuper(String, Class)public static java.util.Set<java.lang.Class<?>> scanPackage()
ClassScaner.scanPackage()public static java.util.Set<java.lang.Class<?>> scanPackage(java.lang.String packageName)
packageName - 包路径 com | com. | com.abs | com.abs.ClassScaner.scanPackage(String)public static java.util.Set<java.lang.Class<?>> scanPackage(java.lang.String packageName,
Filter<java.lang.Class<?>> classFilter)
packageName - 包路径 com | com. | com.abs | com.abs.classFilter - class过滤器,过滤掉不需要的classpublic static java.util.Set<java.lang.String> getPublicMethodNames(java.lang.Class<?> clazz)
clazz - 类public static java.lang.reflect.Method[] getPublicMethods(java.lang.Class<?> clazz)
clazz - 查找方法的类public static java.util.List<java.lang.reflect.Method> getPublicMethods(java.lang.Class<?> clazz,
Filter<java.lang.reflect.Method> filter)
clazz - 查找方法的类filter - 过滤器public static java.util.List<java.lang.reflect.Method> getPublicMethods(java.lang.Class<?> clazz,
java.lang.reflect.Method... excludeMethods)
clazz - 查找方法的类excludeMethods - 不包括的方法public static java.util.List<java.lang.reflect.Method> getPublicMethods(java.lang.Class<?> clazz,
java.lang.String... excludeMethodNames)
clazz - 查找方法的类excludeMethodNames - 不包括的方法名列表public static java.lang.reflect.Method getPublicMethod(java.lang.Class<?> clazz,
java.lang.String methodName,
java.lang.Class<?>... paramTypes)
throws java.lang.SecurityException
nullclazz - 类methodName - 方法名paramTypes - 参数类型java.lang.SecurityException - 无权访问抛出异常public static java.util.Set<java.lang.String> getDeclaredMethodNames(java.lang.Class<?> clazz)
clazz - 类public static java.lang.reflect.Method[] getDeclaredMethods(java.lang.Class<?> clazz)
clazz - 类public static java.lang.reflect.Method getDeclaredMethodOfObj(java.lang.Object obj,
java.lang.String methodName,
java.lang.Object... args)
throws java.lang.SecurityException
obj - 被查找的对象methodName - 方法名args - 参数java.lang.SecurityException - 无访问权限抛出异常public static java.lang.reflect.Method getDeclaredMethod(java.lang.Class<?> clazz,
java.lang.String methodName,
java.lang.Class<?>... parameterTypes)
throws java.lang.SecurityException
nullclazz - 被查找的类methodName - 方法名parameterTypes - 参数类型java.lang.SecurityException - 无访问权限抛出异常public static java.lang.reflect.Field getDeclaredField(java.lang.Class<?> clazz,
java.lang.String fieldName)
throws java.lang.SecurityException
nullclazz - 被查找字段的类fieldName - 字段名java.lang.SecurityException - 安全异常public static java.lang.reflect.Field[] getDeclaredFields(java.lang.Class<?> clazz)
throws java.lang.SecurityException
clazz - 被查找字段的类java.lang.SecurityException - 安全异常public static java.util.Set<java.lang.String> getClassPathResources()
public static java.util.Set<java.lang.String> getClassPathResources(boolean isDecode)
isDecode - 是否解码路径中的特殊字符(例如空格和中文)public static java.util.Set<java.lang.String> getClassPaths(java.lang.String packageName)
packageName - 包名称public static java.util.Set<java.lang.String> getClassPaths(java.lang.String packageName,
boolean isDecode)
packageName - 包名称isDecode - 是否解码路径中的特殊字符(例如空格和中文)public static java.lang.String getClassPath()
public static java.lang.String getClassPath(boolean isEncoded)
isEncoded - 是否编码路径中的中文public static java.net.URL getClassPathURL()
public static java.net.URL getResourceURL(java.lang.String resource)
throws IORuntimeException
config/a/db.config spring/xml/test.xml
resource - 资源(相对Classpath的路径)IORuntimeExceptionResourceUtil.getResource(String)public static java.util.List<java.net.URL> getResources(java.lang.String resource)
config/a spring/xml
resource - 资源路径ResourceUtil.getResources(String)public static java.net.URL getResourceUrl(java.lang.String resource,
java.lang.Class<?> baseClass)
resource - 资源相对路径baseClass - 基准Class,获得的相对路径相对于此Class所在路径,如果为null则相对ClassPathURLResourceUtil.getResource(String, Class)public static java.lang.String[] getJavaClassPaths()
public static java.lang.ClassLoader getContextClassLoader()
ClassLoaderClassLoaderUtil.getClassLoader()public static java.lang.ClassLoader getClassLoader()
ClassLoader1、获取当前线程的ContextClassLoader 2、获取ClassUtil类对应的ClassLoader 3、获取系统ClassLoader(ClassLoader.getSystemClassLoader())
public static boolean isAllAssignableFrom(java.lang.Class<?>[] types1,
java.lang.Class<?>[] types2)
truetypes1 - 类组1types2 - 类组2public static <T> java.lang.Class<T> loadClass(java.lang.String className,
boolean isInitialized)
T - 对象类型className - 类名isInitialized - 是否初始化public static <T> java.lang.Class<T> loadClass(java.lang.String className)
T - 对象类型className - 类名public static <T> T invoke(java.lang.String classNameDotMethodName,
java.lang.Object[] args)
T - 对象类型classNameDotMethodName - 类名和方法名表达式,类名与方法名用.或#连接
例如:com.xiaoleilu.hutool.StrUtil.isEmpty 或 com.xiaoleilu.hutool.StrUtil#isEmptyargs - 参数,必须严格对应指定方法的参数类型和数量public static <T> T invoke(java.lang.String classNameWithMethodName,
boolean isSingleton,
java.lang.Object... args)
T - 对象类型classNameWithMethodName - 类名和方法名表达式,例如:com.xiaoleilu.hutool.StrUtil#isEmpty或com.xiaoleilu.hutool.StrUtil.isEmptyisSingleton - 是否为单例对象,如果此参数为false,每次执行方法时创建一个新对象args - 参数,必须严格对应指定方法的参数类型和数量public static <T> T invoke(java.lang.String className,
java.lang.String methodName,
java.lang.Object[] args)
T - 对象类型className - 类名,完整类路径methodName - 方法名args - 参数,必须严格对应指定方法的参数类型和数量public static <T> T invoke(java.lang.String className,
java.lang.String methodName,
boolean isSingleton,
java.lang.Object[] args)
T - 对象类型className - 类名,完整类路径methodName - 方法名isSingleton - 是否为单例对象,如果此参数为false,每次执行方法时创建一个新对象args - 参数,必须严格对应指定方法的参数类型和数量public static boolean isPrimitiveWrapper(java.lang.Class<?> clazz)
clazz - 类public static boolean isBasicType(java.lang.Class<?> clazz)
clazz - 类public static boolean isSimpleTypeOrArray(java.lang.Class<?> clazz)
clazz - 属性类public static boolean isSimpleValueType(java.lang.Class<?> clazz)
clazz - 类public static boolean isAssignable(java.lang.Class<?> targetType,
java.lang.Class<?> sourceType)
targetType - 目标类型sourceType - 原类型public static boolean isPublic(java.lang.Class<?> clazz)
clazz - 类public static boolean isPublic(java.lang.reflect.Method method)
method - 方法public static boolean isNotPublic(java.lang.Class<?> clazz)
clazz - 类public static boolean isNotPublic(java.lang.reflect.Method method)
method - 方法public static boolean isStatic(java.lang.reflect.Method method)
method - 方法public static java.lang.reflect.Method setAccessible(java.lang.reflect.Method method)
method - 方法public static boolean isAbstract(java.lang.Class<?> clazz)
clazz - 类public static boolean isNormalClass(java.lang.Class<?> clazz)
1、非接口 2、非抽象类 3、非Enum枚举 4、非数组 5、非注解 6、非原始类型(int, long等)
clazz - 类public static boolean isEnum(java.lang.Class<?> clazz)
clazz - 类public static java.lang.Class<?> getTypeArgument(java.lang.Class<?> clazz)
clazz - 被检查的类,必须是已经确定泛型类型的类Classpublic static java.lang.Class<?> getTypeArgument(java.lang.Class<?> clazz,
int index)
clazz - 被检查的类,必须是已经确定泛型类型的类index - 泛型类型的索引号,既第几个泛型类型Classpublic static java.lang.String getPackage(java.lang.Class<?> clazz)
clazz - 类public static java.lang.String getPackagePath(java.lang.Class<?> clazz)
clazz - 类public static java.lang.Object getDefaultValue(java.lang.Class<?> clazz)
1、如果为原始类型,返回0
2、非原始类型返回null
clazz - 类public static java.lang.Object[] getDefaultValues(java.lang.Class<?>... classes)
classes - 值类型Copyright © 2018. All rights reserved.