public class ClassUtil extends Object
| 限定符和类型 | 方法和说明 |
|---|---|
static Class<?>[] |
getClasses(Object... objects)
获得对象数组的类数组
|
static ClassLoader |
getClassLoader()
获得class loader
若当前线程class loader不存在,取当前类的class loader |
static String |
getClassPath()
获得ClassPath
|
static Set<String> |
getClassPathResources()
获得ClassPath
|
static Set<String> |
getClassPaths(String packageName)
获得ClassPath
|
static URL |
getClassPathURL()
获得ClassPath URL
|
static <T> Constructor<T> |
getConstructor(Class<T> clazz,
Class<?>... parameterTypes)
查找类中的指定参数的构造方法
|
static ClassLoader |
getContextClassLoader() |
static Method |
getDeclaredMethod(Class<?> clazz,
String methodName,
Class<?>... parameterTypes)
查找指定类中的所有方法(包括非public方法),也包括父类和Object类的方法
|
static Method |
getDeclaredMethod(Object obj,
String methodName,
Object... args)
查找指定对象中的所有方法(包括非public方法),也包括父对象和Object类的方法
|
static Set<String> |
getDeclaredMethodNames(Class<?> clazz)
获得指定类中的Public方法名
去重重载的方法 |
static Method[] |
getDeclaredMethods(Class<?> clazz)
获得声明的所有方法,包括本类及其父类和接口的所有方法和Object类的方法
|
static String[] |
getJavaClassPaths() |
static String |
getPackage(Class<?> clazz)
获得给定类所在包的名称
例如: com.xiaoleilu.hutool.util.ClassUtil -> com.xiaoleilu.hutool.util |
static String |
getPackagePath(Class<?> clazz)
获得给定类所在包的路径
例如: com.xiaoleilu.hutool.util.ClassUtil -> com/xiaoleilu/hutool/util |
static Method |
getPublicMethod(Class<?> clazz,
String methodName,
Class<?>... paramTypes)
查找指定Public方法
|
static Set<String> |
getPublicMethodNames(Class<?> clazz)
获得指定类中的Public方法名
去重重载的方法 |
static Method[] |
getPublicMethods(Class<?> clazz)
获得本类及其父类所有Public方法
|
static List<Method> |
getPublicMethods(Class<?> clazz,
Filter<Method> filter)
获得指定类过滤后的Public方法列表
|
static List<Method> |
getPublicMethods(Class<?> clazz,
Method... excludeMethods)
获得指定类过滤后的Public方法列表
|
static List<Method> |
getPublicMethods(Class<?> clazz,
String... excludeMethodNames)
获得指定类过滤后的Public方法列表
|
static Class<?> |
getTypeArgument(Class<?> clazz)
获得给定类的第一个泛型参数
|
static Class<?> |
getTypeArgument(Class<?> clazz,
int index)
获得给定类的泛型参数
|
static URL |
getURL(String resource)
获得资源的URL
|
static <T> T |
invoke(Object obj,
Method method,
Object[] args)
执行方法
|
static <T> T |
invoke(Object obj,
String methodName,
Object[] args)
执行方法
可执行Private方法,也可执行static方法 |
static <T> T |
invoke(String classNameDotMethodName,
boolean isSingleton,
Object[] args)
执行方法
可执行Private方法,也可执行static方法 执行非static方法时,必须满足对象有默认构造方法 |
static <T> T |
invoke(String classNameDotMethodName,
Object[] args)
执行方法
可执行Private方法,也可执行static方法 执行非static方法时,必须满足对象有默认构造方法 非单例模式,如果是非静态方法,每次创建一个新对象 |
static <T> T |
invoke(String className,
String methodName,
boolean isSingleton,
Object[] args)
执行方法
可执行Private方法,也可执行static方法 执行非static方法时,必须满足对象有默认构造方法 |
static <T> T |
invoke(String className,
String methodName,
Object[] args)
执行方法
可执行Private方法,也可执行static方法 执行非static方法时,必须满足对象有默认构造方法 非单例模式,如果是非静态方法,每次创建一个新对象 |
static boolean |
isAbstract(Class<?> clazz)
是否为抽象类
|
static boolean |
isAllAssignableFrom(Class<?>[] types1,
Class<?>[] types2)
比较判断types1和types2两组类,如果types1中所有的类都与types2对应位置的类相同,或者是其父类或接口,则返回
true |
static boolean |
isAssignable(Class<?> targetType,
Class<?> sourceType)
检查目标类是否可以从原类转化
转化包括: 1、原类是对象,目标类型是原类型实现的接口 2、目标类型是原类型的父类 3、两者是原始类型或者包装类型(相互转换) |
static boolean |
isBasicType(Class<?> clazz)
是否为基本类型(包括包装类和原始类)
|
static boolean |
isEqualsMethod(Method method)
是否为equals方法
|
static boolean |
isHashCodeMethod(Method method)
是否为hashCode方法
|
static boolean |
isNormalClass(Class<?> clazz)
是否为标准的类
这个类必须: 1、非接口 2、非抽象类 3、非Enum枚举 4、非数组 5、非注解 6、非原始类型(int, long等) |
static boolean |
isNotPublic(Class<?> clazz)
指定类是否为非public
|
static boolean |
isNotPublic(Method method)
指定方法是否为非public
|
static boolean |
isPrimitiveWrapper(Class<?> clazz)
是否为包装类型
|
static boolean |
isPublic(Class<?> clazz)
指定类是否为Public
|
static boolean |
isPublic(Method method)
指定方法是否为Public
|
static boolean |
isSimpleTypeOrArray(Class<?> clazz)
是否简单值类型或简单值类型的数组
包括:原始类型,、String、other CharSequence, a Number, a Date, a URI, a URL, a Locale or a Class及其数组 |
static boolean |
isSimpleValueType(Class<?> clazz)
是否为简单值类型
包括:原始类型,、String、other CharSequence, a Number, a Date, a URI, a URL, a Locale or a Class. |
static boolean |
isStatic(Method method)
是否为静态方法
|
static boolean |
isToStringMethod(Method method)
是否为toString方法
|
static <T> Class<T> |
loadClass(String className)
加载类并初始化
|
static <T> Class<T> |
loadClass(String className,
boolean isInitialized)
加载类
|
static <T> T |
newInstance(Class<T> clazz)
实例化对象
|
static <T> T |
newInstance(Class<T> clazz,
Object... params)
实例化对象
|
static <T> T |
newInstance(String clazz)
实例化对象
|
static Set<Class<?>> |
scanPackage()
扫面该包路径下所有class文件
|
static Set<Class<?>> |
scanPackage(String packageName)
扫面该包路径下所有class文件
|
static Set<Class<?>> |
scanPackage(String packageName,
Filter<Class<?>> classFilter)
扫面包路径下满足class过滤器条件的所有class文件,
如果包路径为 com.abs + A.class 但是输入 abs会产生classNotFoundException
因为className 应该为 com.abs.A 现在却成为abs.A,此工具类对该异常进行忽略处理,有可能是一个不完善的地方,以后需要进行修改
|
static Set<Class<?>> |
scanPackageByAnnotation(String packageName,
Class<? extends Annotation> annotationClass)
扫描指定包路径下所有包含指定注解的类
|
static Set<Class<?>> |
scanPackageBySuper(String packageName,
Class<?> superClass)
扫描指定包路径下所有指定类或接口的子类或实现类
|
static Method |
setAccessible(Method method)
设置方法为可访问
|
public static Class<?>[] getClasses(Object... objects)
objects - 对象数组public static Set<Class<?>> scanPackageByAnnotation(String packageName, Class<? extends Annotation> annotationClass)
packageName - 包路径annotationClass - 注解类ClassScaner.scanPackageByAnnotation(String, Class)public static Set<Class<?>> scanPackageBySuper(String packageName, Class<?> superClass)
packageName - 包路径superClass - 父类或接口ClassScaner.scanPackageBySuper(String, Class)public static Set<Class<?>> scanPackage()
ClassScaner.scanPackage()public static Set<Class<?>> scanPackage(String packageName)
packageName - 包路径 com | com. | com.abs | com.abs.ClassScaner.scanPackage(String)public static Set<Class<?>> scanPackage(String packageName, Filter<Class<?>> classFilter)
packageName - 包路径 com | com. | com.abs | com.abs.classFilter - class过滤器,过滤掉不需要的classpublic static Set<String> getPublicMethodNames(Class<?> clazz)
clazz - 类public static Method[] getPublicMethods(Class<?> clazz)
clazz - 查找方法的类public static List<Method> getPublicMethods(Class<?> clazz, Filter<Method> filter)
clazz - 查找方法的类filter - 过滤器public static List<Method> getPublicMethods(Class<?> clazz, Method... excludeMethods)
clazz - 查找方法的类excludeMethods - 不包括的方法public static List<Method> getPublicMethods(Class<?> clazz, String... excludeMethodNames)
clazz - 查找方法的类excludeMethodNames - 不包括的方法名列表public static Method getPublicMethod(Class<?> clazz, String methodName, Class<?>... paramTypes) throws NoSuchMethodException, SecurityException
clazz - 类methodName - 方法名paramTypes - 参数类型SecurityExceptionNoSuchMethodExceptionpublic static Set<String> getDeclaredMethodNames(Class<?> clazz)
clazz - 类public static Method[] getDeclaredMethods(Class<?> clazz)
clazz - 类public static Method getDeclaredMethod(Object obj, String methodName, Object... args) throws NoSuchMethodException, SecurityException
obj - 被查找的对象methodName - 方法名args - 参数NoSuchMethodException - 无此方法SecurityExceptionpublic static Method getDeclaredMethod(Class<?> clazz, String methodName, Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException
clazz - 被查找的类methodName - 方法名parameterTypes - 参数类型NoSuchMethodException - 无此方法SecurityExceptionpublic static boolean isEqualsMethod(Method method)
method - 方法public static boolean isHashCodeMethod(Method method)
method - 方法public static boolean isToStringMethod(Method method)
method - 方法public static Set<String> getClassPaths(String packageName)
packageName - 包名称public static String getClassPath()
public static URL getClassPathURL()
public static String[] getJavaClassPaths()
public static ClassLoader getContextClassLoader()
public static ClassLoader getClassLoader()
public static <T> T newInstance(String clazz)
clazz - 类名public static <T> T newInstance(Class<T> clazz)
clazz - 类public static <T> T newInstance(Class<T> clazz, Object... params)
clazz - 类public static <T> Constructor<T> getConstructor(Class<T> clazz, Class<?>... parameterTypes)
T - clazz - 类parameterTypes - 参数类型,只要任何一个参数是指定参数的父类或接口或相等即可public static boolean isAllAssignableFrom(Class<?>[] types1, Class<?>[] types2)
truetypes1 - 类组1types2 - 类组2public static <T> Class<T> loadClass(String className, boolean isInitialized)
T - className - 类名isInitialized - 是否初始化public static <T> Class<T> loadClass(String className)
T - className - 类名public static <T> T invoke(String classNameDotMethodName, Object[] args)
T - classNameDotMethodName - 类名和方法名表达式,例如:com.xiaoleilu.hutool.StrUtil.isEmptyargs - 参数,必须严格对应指定方法的参数类型和数量public static <T> T invoke(String classNameDotMethodName, boolean isSingleton, Object[] args)
T - classNameDotMethodName - 类名和方法名表达式,例如:com.xiaoleilu.hutool.StrUtil.isEmptyisSingleton - 是否为单例对象,如果此参数为false,每次执行方法时创建一个新对象args - 参数,必须严格对应指定方法的参数类型和数量public static <T> T invoke(String className, String methodName, Object[] args)
T - className - 类名,完整类路径methodName - 方法名args - 参数,必须严格对应指定方法的参数类型和数量public static <T> T invoke(String className, String methodName, boolean isSingleton, Object[] args)
T - className - 类名,完整类路径methodName - 方法名isSingleton - 是否为单例对象,如果此参数为false,每次执行方法时创建一个新对象args - 参数,必须严格对应指定方法的参数类型和数量public static <T> T invoke(Object obj, String methodName, Object[] args)
T - obj - 对象methodName - 方法名args - 参数,必须严格对应指定方法的参数类型和数量public static <T> T invoke(Object obj, Method method, Object[] args) throws InvocationTargetException, IllegalArgumentException
obj - 对象method - 方法(对象方法或static方法都可)args - 参数对象UtilException - IllegalAccessException and IllegalArgumentExceptionInvocationTargetException - 目标方法执行异常IllegalArgumentException - 参数异常public static boolean isPrimitiveWrapper(Class<?> clazz)
clazz - 类public static boolean isBasicType(Class<?> clazz)
clazz - 类public static boolean isSimpleTypeOrArray(Class<?> clazz)
clazz - 属性类public static boolean isSimpleValueType(Class<?> clazz)
clazz - 类public static boolean isAssignable(Class<?> targetType, Class<?> sourceType)
targetType - 目标类型sourceType - 原类型public static boolean isPublic(Class<?> clazz)
clazz - 类public static boolean isPublic(Method method)
method - 方法public static boolean isNotPublic(Class<?> clazz)
clazz - 类public static boolean isNotPublic(Method method)
method - 方法public static boolean isStatic(Method method)
method - 方法public static boolean isAbstract(Class<?> clazz)
clazz - 类public static boolean isNormalClass(Class<?> clazz)
clazz - 类public static Class<?> getTypeArgument(Class<?> clazz)
clazz - 被检查的类,必须是已经确定泛型类型的类Classpublic static Class<?> getTypeArgument(Class<?> clazz, int index)
clazz - 被检查的类,必须是已经确定泛型类型的类index - 泛型类型的索引号,既第几个泛型类型Classpublic static String getPackage(Class<?> clazz)
clazz - 类Copyright © 2017. All rights reserved.