public final class ClassUtils
extends java.lang.Object
class处理的工具类
| 限定符和类型 | 方法和说明 |
|---|---|
static <T> java.lang.Class<T> |
castGenericType(java.lang.Class<?> type,
T castToType)
Class泛型参数强制转型
|
static java.lang.reflect.Field |
findField(java.lang.Class<?> type,
FieldMatcher matcher)
查找并返回第一个符合条件的Field.
|
static java.util.Collection<java.lang.reflect.Field> |
findFields(java.lang.Class<?> type,
FieldMatcher matcher)
查找并返回所有符合条件Field的集合.
|
static java.lang.reflect.Method |
findMethod(java.lang.Class<?> type,
MethodMatcher matcher)
查找并返回第一个符合条件的Method.
|
static java.util.Collection<java.lang.reflect.Method> |
findMethods(java.lang.Class<?> type,
MethodMatcher matcher)
查找并返回所有符合条件Method的集合.
|
static java.lang.Class<?> |
forName(java.lang.String className)
查找指定类型
|
static <A extends java.lang.annotation.Annotation> |
getAnnotatedFields(java.lang.Class<?> objectType,
java.lang.Class<A> annotationType)
返回指定类型(objectType)被指定注解(annotationType)标注的所有字段【成员变量】(field)
会把父类里有被标注的字段也进行返回
|
static <A extends java.lang.annotation.Annotation> |
getAnnotatedFields(java.lang.Class<?> objectType,
java.lang.Class<A> annotationType,
boolean fromSuper)
返回指定类型(objectType)被指定注解(annotationType)标注的所有字段【成员变量】(field) fromSuper 为
true 时会把父类里有被标注的字段也进行返回,为false则只返回本类的
|
static <A extends java.lang.annotation.Annotation> |
getAnnotatedMethods(java.lang.Class<?> objectType,
java.lang.Class<A> annotationType)
返回指定类型(objectType)被指定注解(annotationType)标注的公共(public)方法(method)
|
static <A1 extends java.lang.annotation.Annotation,A2 extends java.lang.annotation.Annotation> |
getAnnotation(A1 annotation,
java.lang.Class<A2> annotationPresent)
获取标注的注解实力对象,如果没有标注,返回null
|
static <A extends java.lang.annotation.Annotation> |
getAnnotation(java.lang.Class<?> objectType,
java.lang.Class<A> annotationType)
返回指定类型(objectType)的指定注解类型(annotationType), 会把父类里有被标注的字段也进行返回
|
static <A extends java.lang.annotation.Annotation> |
getAnnotation(java.lang.Class<?> objectType,
java.lang.Class<A> annotationType,
boolean fromSuper)
返回指定类型(objectType)的指定注解类型(annotationType), fromSuper 为 true
时如果没有找到annotionType,则继续从父类查找
|
static <A1 extends java.lang.annotation.Annotation,A2 extends java.lang.annotation.Annotation> |
getAnnotations(A1 annotation,
java.lang.Class<A2> annotationPresent)
获取标注的注解实力对象,如果没有标注,返回null
|
static <A extends java.lang.annotation.Annotation> |
getAnnotations(java.lang.Class<?> objectType,
java.lang.Class<A> annotationType)
返回指定类型(objectType)的指定注解类型(annotationType), 会把父类里有被标注的字段也进行返回
|
static <A extends java.lang.annotation.Annotation> |
getAnnotations(java.lang.Class<?> objectType,
java.lang.Class<A> annotationType,
boolean fromSuper)
返回指定类型(objectType)的指定注解类型(annotationType), fromSuper 为 true
时如果没有找到annotionType,则继续从父类查找
|
static java.lang.reflect.Field |
getField(java.lang.Class<?> type,
java.lang.String fieldName)
返回目标类型的指定名称的字段,支持多层嵌套 例如, user.address.no
|
static <T> java.lang.Class<T> |
getFieldGenericType(java.lang.reflect.Field field)
通过反射,获得Field泛型参数的实际类型.
|
static <T> java.lang.Class<T> |
getFieldGenericType(java.lang.reflect.Field field,
int index)
通过反射,获得Field泛型参数的实际类型.
|
static java.lang.Object |
getFieldValue(java.lang.Class<?> type,
java.lang.String fieldName)
返回目标类型的指定类型的静态字段值,支持多层嵌套 例如, user.address.no
|
static java.lang.Object |
getFieldValue(java.lang.Object object,
java.lang.String fieldName)
返回目标对象的指定类型的字段值,支持多层嵌套 例如, user.address.no
|
static java.lang.reflect.Method |
getGetter(java.lang.reflect.Field field,
java.lang.Class<?> type)
返回getter方法,包括getXxx和isXxx 没有找到返回null
|
static java.io.File |
getJar(java.lang.Class<?> type)
获取指定类所在的JAR包的JAR文件.如果不是JAR文件中的返回null
|
static java.io.File |
getJar(java.lang.String className)
获取指定类所在的JAR包的JAR文件.如果不是JAR文件中的返回null
|
static java.lang.Class<?> |
getMethodGenericParameterType(java.lang.reflect.Method method)
通过反射,获得方法输入参数第一个输入参数的第一个泛型参数的实际类型.
|
static java.lang.Class<?> |
getMethodGenericParameterType(java.lang.reflect.Method method,
int index)
通过反射,获得方法输入参数第index个输入参数的第一个泛型参数的实际类型.
|
static <T> java.lang.Class<T> |
getMethodGenericParameterType(java.lang.reflect.Method method,
int paramIndex,
int genericTypeIndex)
通过反射,获得方法输入参数第index个输入参数的所有泛型参数的实际类型.
|
static java.util.List<java.lang.Class<?>> |
getMethodGenericParameterTypes(java.lang.reflect.Method method)
通过反射,获得方法输入参数第一个输入参数的所有泛型参数的实际类型.
|
static java.util.List<java.lang.Class<?>> |
getMethodGenericParameterTypes(java.lang.reflect.Method method,
int index)
通过反射,获得方法输入参数第index个输入参数的所有泛型参数的实际类型.
|
static <T> java.lang.Class<T> |
getMethodGenericReturnType(java.lang.reflect.Method method)
通过反射,获得方法返回值第一个泛型参数的实际类型.
|
static <T> java.lang.Class<T> |
getMethodGenericReturnType(java.lang.reflect.Method method,
int index)
通过反射,获得方法返回值泛型参数的实际类型.
|
static java.lang.String |
getPropertyName(java.lang.reflect.Method method)
返回访问方法的属性名.
|
static java.lang.reflect.Type |
getRawType(java.lang.reflect.Type type)
getRawType
|
static java.lang.reflect.Method |
getSetter(java.lang.reflect.Field field,
java.lang.Class<?> type)
返回setter方法 没有找到返回null
|
static <T> java.lang.Class<T> |
getSuperClassGenricType(java.lang.Class<?> clazz)
通过反射,获得指定类的父类的第一个泛型参数的实际类型.
|
static <T> java.lang.Class<T> |
getSuperClassGenricType(java.lang.Class<?> clazz,
int index)
通过反射,获得指定类的父类的泛型参数的实际类型.
|
static java.util.Map<java.lang.String,java.lang.reflect.Type> |
getSuperClassGenricTypeMap(java.lang.Class<?> clazz)
通过反射,获得指定类的父类的泛型参数的实际类型与父类定义泛型是的定义之间的映射关系.
|
static java.lang.Object |
invokeMethod(java.lang.Class<?> type,
java.lang.reflect.Method method,
java.lang.Object... args)
invoke static method
|
static java.lang.Object |
invokeMethod(java.lang.Class<?> type,
java.lang.String methodName)
invoke static method
|
static java.lang.Object |
invokeMethod(java.lang.Class<?> type,
java.lang.String methodName,
java.lang.Object... args)
invoke static method
|
static java.lang.Object |
invokeMethod(java.lang.Object object,
java.lang.reflect.Method method,
java.lang.Object... args)
invoke object method
|
static java.lang.Object |
invokeMethod(java.lang.Object object,
java.lang.String methodName)
invoke object method
|
static java.lang.Object |
invokeMethod(java.lang.Object object,
java.lang.String methodName,
java.lang.Object... args)
invoke object method
|
static boolean |
isAbstractClass(java.lang.Class<?> type)
判断传入类型是否是抽象类
|
static boolean |
isBasicType(java.lang.Class<?> type)
是否是基础类型,包括基本类型,基本类型包装类, String,StringBuffer,StringBuilder
AtomicInteger,AtomicLong,BigDecimal,BigInteger java.util.Date
java.sql.Date,java.sql.Time,java.sql.Timestamp 注意:不包括这些类的子类
|
static boolean |
isCellection(java.lang.Class<?> type)
是否是cellection接口,及其子接口或实现类
|
static boolean |
isGetter(java.lang.reflect.Method method)
是否是get方法(以get或is开头)
|
static boolean |
isInstanceClass(java.lang.Class<?> type)
判断传入类型是否是可实例化的类
|
static boolean |
isMap(java.lang.Class<?> type)
是否是map接口,及其子接口或实现类
|
static boolean |
isParent(java.lang.Class<?> parentType,
java.lang.Class<?> childType)
判断第一个参数是否是第二个参数的父类(父接口)
|
static boolean |
isSetter(java.lang.reflect.Method method)
是否是set方法(以set开头)
|
static <T> T |
newInstance(java.lang.Class<T> clazz)
实例化.
|
static <T> T |
newInstance(java.lang.Class<T> clazz,
java.lang.Object... args)
实例化.
|
static <T> T |
newInstance(java.lang.reflect.Constructor<T> constructor,
java.lang.Object... args)
实例化.
|
static java.lang.String |
packageToDir(java.lang.Class<?> type)
转换包模式为目录模式.xx.yy.Ttt -> xx/yy/Ttt
|
static java.lang.String |
packageToDir(java.lang.Package pack)
转换包模式为目录模式.xx.yy.Ttt -> xx/yy/Ttt
|
static java.lang.String |
packageToDir(java.lang.String packageString)
转换包模式为目录模式.xx.yy.Ttt -> xx/yy/Ttt
|
static java.lang.String |
packageToFile(java.lang.Class<?> type)
转换包模式为目录模式.xx.yy.Ttt -> xx/yy/Ttt
|
static java.lang.String |
packageToFile(java.lang.Class<?> type,
boolean containExt)
转换包模式为目录模式.xx.yy.Ttt -> xx/yy/Ttt
|
static java.lang.Class<?> |
parentClass(java.lang.Class<?> c1,
java.lang.Class<?> c2)
返回传入类型的共同父类
|
static void |
setFieldValue(java.lang.Class<?> type,
java.lang.String fieldName,
java.lang.Object value)
设置目标类型的指定类型的静态字段值,支持多层嵌套 例如, user.address.no
|
static void |
setFieldValue(java.lang.Object object,
java.lang.String fieldName,
java.lang.Object value)
设置目标对象的指定类型的字段值,支持多层嵌套 例如, user.address.no
|
public static java.lang.Class<?> forName(java.lang.String className)
查找指定类型
className - 类名public static boolean isParent(java.lang.Class<?> parentType,
java.lang.Class<?> childType)
parentType - 父类型(包括类和接口)childType - 子类型(包括类和接口)public static java.lang.Class<?> parentClass(java.lang.Class<?> c1,
java.lang.Class<?> c2)
返回传入类型的共同父类
c1 - 类型1c2 - 类型2public static java.lang.reflect.Field getField(java.lang.Class<?> type,
java.lang.String fieldName)
type - 目标类型fieldName - 字段名public static java.lang.Object getFieldValue(java.lang.Class<?> type,
java.lang.String fieldName)
type - 目标类型fieldName - 字段名public static java.lang.Object getFieldValue(java.lang.Object object,
java.lang.String fieldName)
object - 目标对象fieldName - 字段名public static void setFieldValue(java.lang.Class<?> type,
java.lang.String fieldName,
java.lang.Object value)
type - 目标类型fieldName - 字段名value - the valuepublic static void setFieldValue(java.lang.Object object,
java.lang.String fieldName,
java.lang.Object value)
object - 目标对象fieldName - 字段名value - valuepublic static java.lang.Object invokeMethod(java.lang.Class<?> type,
java.lang.String methodName)
type - typemethodName - method namepublic static java.lang.Object invokeMethod(java.lang.Class<?> type,
java.lang.String methodName,
java.lang.Object... args)
type - typemethodName - method nameargs - method argumentspublic static java.lang.Object invokeMethod(java.lang.Class<?> type,
java.lang.reflect.Method method,
java.lang.Object... args)
type - typemethod - methodargs - method argumentspublic static java.lang.Object invokeMethod(java.lang.Object object,
java.lang.String methodName)
object - objectmethodName - method namepublic static java.lang.Object invokeMethod(java.lang.Object object,
java.lang.String methodName,
java.lang.Object... args)
object - objectmethodName - method nameargs - method argumentspublic static java.lang.Object invokeMethod(java.lang.Object object,
java.lang.reflect.Method method,
java.lang.Object... args)
object - objectmethod - methodargs - method argumentspublic static <A1 extends java.lang.annotation.Annotation,A2 extends java.lang.annotation.Annotation> A2 getAnnotation(A1 annotation,
java.lang.Class<A2> annotationPresent)
A1 - 被标注的注解泛型A2 - 标注的注解泛型annotation - 被标注的注解实例对象annotationPresent - 标注的注解类型public static <A extends java.lang.annotation.Annotation> A getAnnotation(java.lang.Class<?> objectType,
java.lang.Class<A> annotationType)
A - 注解泛型objectType - 对象类型annotationType - 注解类型public static <A extends java.lang.annotation.Annotation> A getAnnotation(java.lang.Class<?> objectType,
java.lang.Class<A> annotationType,
boolean fromSuper)
A - 注解泛型objectType - 对象类型annotationType - 注解类型fromSuper - 是否从父类型查找public static <A1 extends java.lang.annotation.Annotation,A2 extends java.lang.annotation.Annotation> A2[] getAnnotations(A1 annotation,
java.lang.Class<A2> annotationPresent)
A1 - 被标注的注解泛型A2 - 标注的注解泛型annotation - 被标注的注解实例对象annotationPresent - 标注的注解类型public static <A extends java.lang.annotation.Annotation> A[] getAnnotations(java.lang.Class<?> objectType,
java.lang.Class<A> annotationType)
A - 注解泛型objectType - 对象类型annotationType - 注解类型public static <A extends java.lang.annotation.Annotation> A[] getAnnotations(java.lang.Class<?> objectType,
java.lang.Class<A> annotationType,
boolean fromSuper)
A - 注解泛型objectType - 对象类型annotationType - 注解类型fromSuper - 是否从父类型查找public static <A extends java.lang.annotation.Annotation> java.util.List<java.lang.reflect.Field> getAnnotatedFields(java.lang.Class<?> objectType,
java.lang.Class<A> annotationType)
A - 注解泛型objectType - 对象类型annotationType - 注解类型public static <A extends java.lang.annotation.Annotation> java.util.List<java.lang.reflect.Field> getAnnotatedFields(java.lang.Class<?> objectType,
java.lang.Class<A> annotationType,
boolean fromSuper)
A - 注解泛型objectType - 对象类型annotationType - 注解类型fromSuper - 是否从父类型查找public static <A extends java.lang.annotation.Annotation> java.util.List<java.lang.reflect.Method> getAnnotatedMethods(java.lang.Class<?> objectType,
java.lang.Class<A> annotationType)
A - 注解类型objectType - 目标类型annotationType - 注解类型public static java.lang.String getPropertyName(java.lang.reflect.Method method)
method - 方法public static boolean isSetter(java.lang.reflect.Method method)
method - 方法public static boolean isGetter(java.lang.reflect.Method method)
method - 方法public static java.lang.reflect.Method getGetter(java.lang.reflect.Field field,
java.lang.Class<?> type)
field - 成员变量type - 类型public static java.lang.reflect.Method getSetter(java.lang.reflect.Field field,
java.lang.Class<?> type)
field - 成员变量type - 类型public static boolean isBasicType(java.lang.Class<?> type)
type - 类型public static boolean isCellection(java.lang.Class<?> type)
type - 类型public static boolean isMap(java.lang.Class<?> type)
type - 类型public static boolean isAbstractClass(java.lang.Class<?> type)
判断传入类型是否是抽象类
type - typepublic static boolean isInstanceClass(java.lang.Class<?> type)
判断传入类型是否是可实例化的类
type - typepublic static <T> java.lang.Class<T> castGenericType(java.lang.Class<?> type,
T castToType)
Class泛型参数强制转型
T - 泛型type - typecastToType - castToTypepublic static java.io.File getJar(java.lang.Class<?> type)
获取指定类所在的JAR包的JAR文件.如果不是JAR文件中的返回null
type - 类型public static java.io.File getJar(java.lang.String className)
获取指定类所在的JAR包的JAR文件.如果不是JAR文件中的返回null
className - classNamepublic static java.lang.String packageToFile(java.lang.Class<?> type)
转换包模式为目录模式.xx.yy.Ttt -> xx/yy/Ttt
type - 类型public static java.lang.String packageToFile(java.lang.Class<?> type,
boolean containExt)
转换包模式为目录模式.xx.yy.Ttt -> xx/yy/Ttt
type - 类型containExt - 包含扩展名public static java.lang.String packageToDir(java.lang.Class<?> type)
转换包模式为目录模式.xx.yy.Ttt -> xx/yy/Ttt
type - 类型public static java.lang.String packageToDir(java.lang.Package pack)
转换包模式为目录模式.xx.yy.Ttt -> xx/yy/Ttt
pack - 包public static java.lang.String packageToDir(java.lang.String packageString)
转换包模式为目录模式.xx.yy.Ttt -> xx/yy/Ttt
packageString - 包模式字符串public static <T> java.lang.Class<T> getSuperClassGenricType(java.lang.Class<?> clazz,
int index)
T - 泛型clazz - clazz 需要反射的类,该类必须继承范型父类index - 泛型参数所在索引,从0开始.Object.classpublic static <T> java.lang.Class<T> getSuperClassGenricType(java.lang.Class<?> clazz)
T - 泛型clazz - clazz 需要反射的类,该类必须继承泛型父类Object.classpublic static java.util.Map<java.lang.String,java.lang.reflect.Type> getSuperClassGenricTypeMap(java.lang.Class<?> clazz)
clazz - clazz 需要反射的类,该类必须继承泛型父类Object.classpublic static <T> java.lang.Class<T> getMethodGenericReturnType(java.lang.reflect.Method method,
int index)
T - 泛型method - 方法index - 泛型参数所在索引,从0开始.Object.classpublic static <T> java.lang.Class<T> getMethodGenericReturnType(java.lang.reflect.Method method)
T - 泛型method - 方法Object.classpublic static java.lang.Class<?> getMethodGenericParameterType(java.lang.reflect.Method method)
method - 方法public static java.lang.Class<?> getMethodGenericParameterType(java.lang.reflect.Method method,
int index)
method - 方法index - 第几个输入参数public static <T> java.lang.Class<T> getMethodGenericParameterType(java.lang.reflect.Method method,
int paramIndex,
int genericTypeIndex)
T - the generic typemethod - 方法paramIndex - 第几个输入参数genericTypeIndex - 第几个泛型参数public static java.util.List<java.lang.Class<?>> getMethodGenericParameterTypes(java.lang.reflect.Method method)
method - 方法public static java.util.List<java.lang.Class<?>> getMethodGenericParameterTypes(java.lang.reflect.Method method,
int index)
method - 方法index - 第几个输入参数public static <T> java.lang.Class<T> getFieldGenericType(java.lang.reflect.Field field)
T - 泛型field - 字段Object.classpublic static <T> java.lang.Class<T> getFieldGenericType(java.lang.reflect.Field field,
int index)
T - 泛型field - 字段index - 泛型参数所在索引,从0开始.Object.classpublic static <T> T newInstance(java.lang.Class<T> clazz)
T - 泛型clazz - 类型public static <T> T newInstance(java.lang.Class<T> clazz,
java.lang.Object... args)
T - 泛型clazz - 类型args - 参数数组public static <T> T newInstance(java.lang.reflect.Constructor<T> constructor,
java.lang.Object... args)
T - 泛型constructor - 构造器args - 参数数组public static java.lang.reflect.Field findField(java.lang.Class<?> type,
FieldMatcher matcher)
查找并返回第一个符合条件的Field. 如果没有则返回null.
type - 匹配条件matcher - 匹配条件public static java.util.Collection<java.lang.reflect.Field> findFields(java.lang.Class<?> type,
FieldMatcher matcher)
查找并返回所有符合条件Field的集合. 如果没有则返回一个长度为0的集合.
type - 类型matcher - 匹配条件public static java.lang.reflect.Method findMethod(java.lang.Class<?> type,
MethodMatcher matcher)
查找并返回第一个符合条件的Method. 如果没有则返回null.
type - 类型matcher - 匹配条件public static java.util.Collection<java.lang.reflect.Method> findMethods(java.lang.Class<?> type,
MethodMatcher matcher)
查找并返回所有符合条件Method的集合. 如果没有则返回一个长度为0的集合.
type - 类型matcher - 匹配条件public static java.lang.reflect.Type getRawType(java.lang.reflect.Type type)
type - type