public class ClassUtils extends Object
| Modifier and Type | Class and Description |
|---|---|
static class |
ClassUtils.Interfaces |
| Constructor and Description |
|---|
ClassUtils() |
| Modifier and Type | Method and Description |
|---|---|
static Map<String,Object> |
beanToMap(Object bean)
对象转Map,不进行驼峰转下划线,不忽略值为空的字段
|
static Map<String,Object> |
beanToMap(Object bean,
boolean isToUnderlineCase,
boolean ignoreNullValue)
对象转Map
|
static Map<String,Object> |
beanToMap(Object bean,
Map<String,Object> targetMap,
boolean isToUnderlineCase,
boolean ignoreNullValue)
对象转Map
|
static Map<String,Object> |
beanToMap(Object bean,
Map<String,Object> targetMap,
boolean ignoreNullValue,
Editor<String> keyEditor)
对象转Map
通过实现
Editor 可以自定义字段值,如果这个Editor返回null则忽略这个字段,以便实现: |
static String |
convertClassNameToResourcePath(String className)
把一个'.'的类路径转换为基于/的类路径
|
static boolean |
equals(Class<?> clazz,
String className,
boolean ignoreCase)
指定类是否与给定的类名相同
|
static <T> T |
fillBean(T bean,
ValueProvider<String> valueProvider,
CopyOptions copyOptions)
填充Bean的核心方法
|
static Class<?> |
forName(String name,
ClassLoader classLoader)
替换{@code Class.
|
static Method |
getAccessibleMethod(Class<?> cls,
String methodName,
Class<?>... parameterTypes)
返回具有给定名称和参数的可访问方法(即可以通过反射调用的方法)
|
static Method |
getAccessibleMethod(Method method)
返回实现指定方法的可访问方法(即可以通过反射调用的方法)。如果找不到这样的方法,返回
null |
static List<Field> |
getAllFieldList(Class clazz)
获取类所有的字段信息
ps: 这个方法有个问题 如果子类和父类有相同的字段 会不会重复
1.
|
static Field[] |
getAllFields(Class<?> cls)
获取给定类及其父类的所有字段(如果有).
|
static List<Field> |
getAllFieldsList(Class<?> cls)
获取给定类及其父类的所有字段(如果有).
|
static List<Method> |
getAllFieldsReadMethods(Class clazz)
获取所有字段的 read 方法列表
|
static List<Class<?>> |
getAllInterfaces(Class<?> cls)
获取由给定接口实现的所有接口的
List 类及其超类. |
static void |
getAllInterfaces(Class<?> cls,
HashSet<Class<?>> interfacesFound)
获取指定类的接口.
|
static List<Class<?>> |
getAllSuperclasses(Class<?> cls)
获取给定类的超类的
List. |
static <A extends Annotation> |
getAnnotation(Method method,
Class<A> annotationCls,
boolean searchSupers,
boolean ignoreAccess)
获取具有给定注释类型的注释对象,该注释类型出现在给定方法上,或可选地出现在超类和接口中的任何等效方法上。如果注释类型不存在,则返回null
|
static BeanDesc |
getBeanDesc(Class<?> clazz)
获取
BeanDesc Bean描述信息 |
static <T> Class<T> |
getClass(T obj)
null安全的获取对象类型 |
static Class<?>[] |
getClasses(Object... objects)
获得对象数组的类数组
|
static ClassLoader |
getClassLoader()
获取
ClassLoader
获取顺序如下: |
static String |
getClassName(Class<?> clazz,
boolean isSimple)
获取类名
类名并不包含“.class”这个扩展名
例如:ClassUtil这个类
|
static String |
getClassName(Object obj,
boolean isSimple)
获取类名
|
static String |
getClassPath()
获得ClassPath,将编码后的中文路径解码为原字符
这个ClassPath路径会文件路径被标准化处理
|
static String |
getClassPath(boolean isEncoded)
获得ClassPath,这个ClassPath路径会文件路径被标准化处理
|
static URL |
getClassPathURL()
获得ClassPath URL
|
static String |
getClassVar(String className)
获取对应类的默认变量名
|
static ClassLoader |
getContextClassLoader()
获取当前线程的
ClassLoader |
static Field |
getDeclaredField(Class<?> clazz,
String fieldName)
查找指定类中的所有字段(包括非public字段), 字段不存在则返回null
|
static Field |
getDeclaredField(Class<?> clazz,
String fieldName,
boolean forceAccess)
按名称获取可访问的
Field,如果请求则中断作用域。只考虑指定的类 |
static Field[] |
getDeclaredFields(Class<?> clazz)
查找指定类中的所有字段(包括非public字段)
|
static Method |
getDeclaredMethod(Class<?> clazz,
String methodName,
Class<?>... parameterTypes)
查找指定类中的所有方法(包括非public方法),也包括父类和Object类的方法 找不到方法会返回null
|
static Set<String> |
getDeclaredMethodNames(Class<?> clazz)
获得指定类中的Public方法名
去重重载的方法
|
static Method |
getDeclaredMethodOfObj(Object obj,
String methodName,
Object... args)
查找指定对象中的所有方法(包括非public方法),也包括父对象和Object类的方法
|
static Method[] |
getDeclaredMethods(Class<?> clazz)
获得声明的所有方法,包括本类及其父类和接口的所有方法和Object类的方法
|
static ClassLoader |
getDefaultClassLoader() |
static Object |
getDefaultValue(Class<?> clazz)
获取指定类型分的默认值
默认值规则为:
|
static Object[] |
getDefaultValues(Class<?>... classes)
获得默认值列表
|
static Field |
getField(Class<?> cls,
String fieldName)
根据名称获取可访问的
Field范围 |
static Field |
getField(Class<?> cls,
String fieldName,
boolean forceAccess)
按名称获取可访问的
Field,如果请求则中断作用域. |
static List<Field> |
getFieldsListWithAnnotation(Class<?> cls,
Class<? extends Annotation> annotationCls)
获取用给定注释注释的给定类及其父类的所有字段(如果有).
|
static Field[] |
getFieldsWithAnnotation(Class<?> cls,
Class<? extends Annotation> annotationCls)
获取用给定注释注释的给定类及其父类的所有字段(如果有).
|
static JarLoaders |
getJarClassLoader(File jarOrDir)
创建新的
JarLoaders,并使用此Classloader加载目录下的class文件和jar文件 |
static String[] |
getJavaClassPaths() |
static Method |
getMatchingAccessibleMethod(Class<?> cls,
String methodName,
Class<?>... parameterTypes)
查找与给定名称匹配且具有兼容参数的可访问方法.
|
static Method |
getMatchingMethod(Class<?> cls,
String methodName,
Class<?>... parameterTypes)
检索是否可访问的方法
|
static List<Method> |
getMethodsListWithAnnotation(Class<?> cls,
Class<? extends Annotation> annotationCls)
获取使用给定注释进行注释的给定类的所有类级公共方法.
|
static List<Method> |
getMethodsListWithAnnotation(Class<?> cls,
Class<? extends Annotation> annotationCls,
boolean searchSupers,
boolean ignoreAccess)
获取使用给定注释进行注释的给定类的所有方法.
|
static Method[] |
getMethodsWithAnnotation(Class<?> cls,
Class<? extends Annotation> annotationCls)
获取使用给定注释进行注释的给定类的所有类级公共方法.
|
static Method[] |
getMethodsWithAnnotation(Class<?> cls,
Class<? extends Annotation> annotationCls,
boolean searchSupers,
boolean ignoreAccess)
获取使用给定注释进行注释的给定类的所有方法.
|
static Set<Method> |
getOverrideHierarchy(Method method,
ClassUtils.Interfaces interfacesBehavior)
将被覆盖方法的层次结构向下获取到
result,其中包含泛型. |
static String |
getPackage(Class<?> clazz)
获得给定类所在包的名称
例如:org.aoju.bus.core.utils
|
static String |
getPackageName(Class<?> clazz)
获取给定类的包的名称.
|
static String |
getPackageName(String className)
获取给定类的包的名称.
|
static String |
getPackagePath(Class<?> clazz)
获得给定类所在包的路径
例如:
|
static Method |
getPublicMethod(Class<?> clazz,
String methodName,
Class<?>... paramTypes)
查找指定Public方法 如果找不到对应的方法或方法不为public的则返回null
|
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 URL |
getResourceURL(String resource)
获得资源的URL
路径用/分隔,例如:
|
static String |
getShortClassName(Class<?> cls)
从
Class中获取类名减去包名. |
static String |
getShortClassName(Object object,
String valueIfNull)
获取类名减去
Class的包名 |
static String |
getShortClassName(String className)
从字符串中获取类名减去包名
|
static String |
getSimpleName(Class<?> cls)
简单的类名
|
static String |
getSimpleName(Class<?> cls,
String valueIfNull)
简单的类名
|
static String |
getSimpleName(Object object)
简单的类名
|
static String |
getSimpleName(Object object,
String valueIfNull)
简单的类名
|
static Class<?> |
getTypeArgument(Class<?> clazz)
获得给定类的第一个泛型参数
|
static Class<?> |
getTypeArgument(Class<?> clazz,
int index)
获得给定类的泛型参数
|
static Iterable<Class<?>> |
hierarchy(Class<?> type)
获取一个
Iterable,它可以按照从子类到超类的升序遍历类层次结构,不包括接口. |
static Iterable<Class<?>> |
hierarchy(Class<?> type,
ClassUtils.Interfaces interfacesBehavior)
获取一个
Iterable,它可以按照从子类到超类的升序遍历类层次结构. |
static <T> T |
invoke(String classNameWithMethodName,
boolean isSingleton,
Object... args)
执行方法
可执行Private方法,也可执行static方法 执行非static方法时,必须满足对象有默认构造方法 |
static <T> T |
invoke(String classNameWithMethodName,
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 Object |
invokeExactMethod(Object object,
String methodName)
调用参数类型与对象类型完全匹配的方法
|
static Object |
invokeExactMethod(Object object,
String methodName,
Object... args)
调用没有参数的方法
|
static Object |
invokeExactMethod(Object object,
String methodName,
Object[] args,
Class<?>[] parameterTypes)
调用参数类型与给定参数类型完全匹配的方法
|
static Object |
invokeExactStaticMethod(Class<?> cls,
String methodName,
Object... args)
调用参数类型与对象类型完全匹配的
static方法 |
static Object |
invokeExactStaticMethod(Class<?> cls,
String methodName,
Object[] args,
Class<?>[] parameterTypes)
调用参数类型与给定参数类型完全匹配的
static方法 |
static Object |
invokeMethod(Object object,
boolean forceAccess,
String methodName)
调用没有参数的命名方法.
|
static Object |
invokeMethod(Object object,
boolean forceAccess,
String methodName,
Object... args)
调用其参数类型与对象类型匹配的已命名方法
|
static Object |
invokeMethod(Object object,
boolean forceAccess,
String methodName,
Object[] args,
Class<?>[] parameterTypes)
调用其参数类型与对象类型匹配的已命名方法.
|
static Object |
invokeMethod(Object object,
String methodName)
调用没有参数的命名方法.
|
static Object |
invokeMethod(Object object,
String methodName,
Object... args)
调用其参数类型与对象类型匹配的已命名方法.
|
static Object |
invokeMethod(Object object,
String methodName,
Object[] args,
Class<?>[] parameterTypes)
调用其参数类型与对象类型匹配的已命名方法.
|
static Object |
invokeStaticMethod(Class<?> cls,
String methodName,
Object... args)
调用一个名为
static的方法,该方法的参数类型与对象类型匹配 |
static Object |
invokeStaticMethod(Class<?> cls,
String methodName,
Object[] args,
Class<?>[] parameterTypes)
调用一个名为
static的方法,该方法的参数类型与对象类型匹配 |
static boolean |
isAbstract(Class<?> clazz)
是否为抽象类
|
static boolean |
isAllAssignableFrom(Class<?>[] types1,
Class<?>[] types2)
比较判断types1和types2两组类,如果types1中所有的类都与types2对应位置的类相同,或者是其父类或接口,则返回true
|
static boolean |
isAssignable(Class<?>[] classArray,
Class<?>... toClassArray)
检查目标类是否可以从原类转化
转化包括:
1、原类是对象,目标类型是原类型实现的接口
2、目标类型是原类型的父类
3、两者是原始类型或者包装类型(相互转换)
|
static boolean |
isAssignable(Class<?>[] classArray,
Class<?>[] toClassArray,
boolean autoboxing)
检查目标类是否可以从原类转化
转化包括:
1、原类是对象,目标类型是原类型实现的接口
2、目标类型是原类型的父类
3、两者是原始类型或者包装类型(相互转换)
|
static boolean |
isAssignable(Class<?> classArray,
Class<?> toClassArray)
检查目标类是否可以从原类转化
转化包括:
1、原类是对象,目标类型是原类型实现的接口
2、目标类型是原类型的父类
3、两者是原始类型或者包装类型(相互转换)
|
static boolean |
isAssignable(Class<?> cls,
Class<?> toClass,
boolean autoboxing) |
static boolean |
isBasicType(Class<?> clazz)
是否为基本类型(包括包装类和原始类)
|
static boolean |
isBean(Class<?> clazz)
判断是否为Bean对象
判定方法是是否存在只有一个参数的setXXX方法
|
static boolean |
isEnum(Class<?> clazz)
判断类是否为枚举类型
|
static boolean |
isNormalClass(Class<?> clazz)
是否为标准的类
这个类必须:
|
static boolean |
isNotPublic(Class<?> clazz)
指定类是否为非public
|
static boolean |
isNotPublic(Method method)
指定方法是否为非public
|
static boolean |
isPresent(String className)
指定类是否被提供,使用默认ClassLoader
通过调用
loadClass(String, ClassLoader, boolean)方法尝试加载指定类名的类,如果加载失败返回false
加载失败的原因可能是此类不存在或其关联引用类不存在 |
static boolean |
isPresent(String className,
ClassLoader classLoader)
指定类是否被提供
通过调用
loadClass(String, ClassLoader, boolean)方法尝试加载指定类名的类,如果加载失败返回false
加载失败的原因可能是此类不存在或其关联引用类不存在 |
static boolean |
isPrimitiveOrWrapper(Class<?> type)
|
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)
是否为简单值类型
包括:
|
static boolean |
isStatic(Method method)
是否为静态方法
|
static boolean |
isUserLevelMethod(Method method) |
static Class<?> |
loadClass(File jarOrDir,
String name)
加载外部类
|
static <T> Class<T> |
loadClass(String name)
加载类,通过传入类的字符串,返回其对应的类名,使用默认ClassLoader并初始化类(调用static模块内容和初始化static属性)
扩展
Class.forName(String, boolean, ClassLoader)方法,支持以下几类类名的加载: |
static <T> Class<T> |
loadClass(String name,
boolean isInitialized)
加载类,通过传入类的字符串,返回其对应的类名,使用默认ClassLoader
扩展
Class.forName(String, boolean, ClassLoader)方法,支持以下几类类名的加载: |
static Class<?> |
loadClass(String name,
ClassLoader classLoader,
boolean isInitialized)
加载类,通过传入类的字符串,返回其对应的类名
此方法支持缓存,第一次被加载的类之后会读取缓存中的类
加载失败的原因可能是此类不存在或其关联引用类不存在
扩展
Class.forName(String, boolean, ClassLoader)方法,支持以下几类类名的加载: |
static Class<?> |
loadPrimitiveClass(String name)
加载原始类型的类 包括原始类型、原始类型数组和void
|
static <T> T |
newInstance(Class<T> clazz)
获取对象的实例化
|
static Class<?>[] |
primitivesToWrappers(Class<?>... classes)
将原语类对象的指定数组转换为其相应包装器类对象的数组
|
static Class<?> |
primitiveToWrapper(Class<?> cls)
将指定的基元类对象转换为其对应的包装器类对象
|
static Object |
readDeclaredField(Object target,
String fieldName)
读取指定的
public Field 只考虑指定对象的类. |
static Object |
readDeclaredField(Object target,
String fieldName,
boolean forceAccess)
按名称获取
Field值 只考虑指定对象的类. |
static Object |
readDeclaredStaticField(Class<?> cls,
String fieldName)
|
static Object |
readDeclaredStaticField(Class<?> cls,
String fieldName,
boolean forceAccess)
|
static Object |
readField(Field field,
Object target)
读取一个可访问的
Field. |
static Object |
readField(Field field,
Object target,
boolean forceAccess)
读取一个可访问的
Field. |
static Object |
readField(Object target,
String fieldName)
Reads the named
public Field. |
static Object |
readField(Object target,
String fieldName,
boolean forceAccess)
读取指定的
Field 将考虑超类. |
static Object |
readStaticField(Class<?> cls,
String fieldName)
读取指定的
public static Field。将考虑超类. |
static Object |
readStaticField(Class<?> cls,
String fieldName,
boolean forceAccess)
读取指定的
static Field,将考虑超类 |
static Object |
readStaticField(Field field)
读取可访问的
static Field. |
static Object |
readStaticField(Field field,
boolean forceAccess)
读取一个静态
Field. |
static void |
removeFinalModifier(Field field)
移除修饰符
Field. |
static void |
removeFinalModifier(Field field,
boolean forceAccess)
移除修饰符
Field. |
static Class<?> |
resolvePrimitiveClassName(String name) |
static Method |
setAccessible(Method method)
设置方法为可访问
|
static Class<?>[] |
toClass(Object... array) |
static Class<?>[] |
wrappersToPrimitives(Class<?>... classes)
将包装器类对象的指定数组转换为其相应基元类对象的数组
|
static Class<?> |
wrapperToPrimitive(Class<?> cls)
将指定的包装器类转换为其对应的基元类
|
static void |
writeDeclaredField(Object target,
String fieldName,
Object value)
写一个
public Field 只考虑指定的类. |
static void |
writeDeclaredField(Object target,
String fieldName,
Object value,
boolean forceAccess)
处理
public Field 只考虑指定的类. |
static void |
writeDeclaredStaticField(Class<?> cls,
String fieldName,
Object value)
写一个命名
public static Field 只考虑指定的类. |
static void |
writeDeclaredStaticField(Class<?> cls,
String fieldName,
Object value,
boolean forceAccess)
写一个命名的
static Field只考虑指定的类。 |
static void |
writeField(Field field,
Object target,
Object value)
写一个可访问的
Field. |
static void |
writeField(Field field,
Object target,
Object value,
boolean forceAccess)
写一个可访问的
Field. |
static void |
writeField(Object target,
String fieldName,
Object value)
处理
public Field 将考虑超类 |
static void |
writeField(Object target,
String fieldName,
Object value,
boolean forceAccess)
处理
public Field 将考虑超类. |
static void |
writeStaticField(Class<?> cls,
String fieldName,
Object value)
写一个命名
public static Field 将考虑超类 |
static void |
writeStaticField(Class<?> cls,
String fieldName,
Object value,
boolean forceAccess)
写一个命名的
static Field 将考虑超类. |
static void |
writeStaticField(Field field,
Object value)
写一个
public static Field. |
static void |
writeStaticField(Field field,
Object value,
boolean forceAccess)
写一个静态方法
Field. |
public static <T> Class<T> getClass(T obj)
null安全的获取对象类型T - 对象类型obj - 对象,如果为null 返回nullnull 返回nullpublic static String getClassName(Object obj, boolean isSimple)
obj - 获取类名对象isSimple - 是否简单类名,如果为true,返回不带包名的类名public static String getClassName(Class<?> clazz, boolean isSimple)
isSimple为false: "org.aoju.core.utils.ClassUtils" isSimple为true: "ClassUtils"
clazz - 类isSimple - 是否简单类名,如果为true,返回不带包名的类名public static Class<?>[] getClasses(Object... objects)
objects - 对象数组,如果数组中存在null元素,则此元素被认为是Object类型public static boolean equals(Class<?> clazz, String className, boolean ignoreCase)
clazz - 类className - 类名,可以是全类名(包含包名),也可以是简单类名(不包含包名)ignoreCase - 是否忽略大小写public 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 SecurityException
clazz - 类methodName - 方法名paramTypes - 参数类型SecurityException - 无权访问抛出异常public static Set<String> getDeclaredMethodNames(Class<?> clazz)
clazz - 类public static Method[] getDeclaredMethods(Class<?> clazz)
clazz - 类public static Method getDeclaredMethodOfObj(Object obj, String methodName, Object... args) throws SecurityException
obj - 被查找的对象methodName - 方法名args - 参数SecurityException - 无访问权限抛出异常public static Method getDeclaredMethod(Class<?> clazz, String methodName, Class<?>... parameterTypes) throws SecurityException
clazz - 被查找的类methodName - 方法名parameterTypes - 参数类型SecurityException - 无访问权限抛出异常public static Field[] getDeclaredFields(Class<?> clazz) throws SecurityException
clazz - 被查找字段的类SecurityException - 安全异常public static String[] getJavaClassPaths()
public static boolean isAllAssignableFrom(Class<?>[] types1, Class<?>[] types2)
types1 - 类组1types2 - 类组2public static <T> T invoke(String classNameWithMethodName, Object[] args)
T - 对象类型classNameWithMethodName - 类名和方法名表达式,类名与方法名用.或#连接 例如:com.xiaoleilu.hutool.StrUtil.isEmpty 或 com.xiaoleilu.hutool.StrUtil#isEmptyargs - 参数,必须严格对应指定方法的参数类型和数量public static <T> T invoke(String classNameWithMethodName, boolean isSingleton, Object... args)
T - 对象类型classNameWithMethodName - 类名和方法名表达式,例如:com.xiaoleilu.hutool.StrUtil#isEmpty或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 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)
原始类型
String
CharSequence
Number
Date
URI
URL
Locale
Class
clazz - 类clazz - 类public static boolean isAssignable(Class<?>[] classArray, Class<?>... toClassArray)
classArray - 目标类型toClassArray - 原类型public static boolean isAssignable(Class<?> classArray, Class<?> toClassArray)
classArray - 目标类型toClassArray - 原类型public static boolean isAssignable(Class<?>[] classArray, Class<?>[] toClassArray, boolean autoboxing)
classArray - 目标类型toClassArray - 原类型autoboxing - 自动操作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 Method setAccessible(Method method)
method - 方法public static boolean isAbstract(Class<?> clazz)
clazz - 类public static boolean isNormalClass(Class<?> clazz)
1、非接口 2、非抽象类 3、非Enum枚举 4、非数组 5、非注解 6、非原始类型(int, long等)
clazz - 类public static boolean isEnum(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 - 类public static String getPackagePath(Class<?> clazz)
clazz - 类public static Object getDefaultValue(Class<?> clazz)
1、如果为原始类型,返回0
2、非原始类型返回 null
clazz - 类public static Object[] getDefaultValues(Class<?>... classes)
classes - 值类型public static boolean isBean(Class<?> clazz)
clazz - 待测试类public static Map<String,Object> beanToMap(Object bean)
bean - bean对象public static Map<String,Object> beanToMap(Object bean, boolean isToUnderlineCase, boolean ignoreNullValue)
bean - bean对象isToUnderlineCase - 是否转换为下划线模式ignoreNullValue - 是否忽略值为空的字段public static Map<String,Object> beanToMap(Object bean, Map<String,Object> targetMap, boolean isToUnderlineCase, boolean ignoreNullValue)
bean - bean对象targetMap - 目标的MapisToUnderlineCase - 是否转换为下划线模式ignoreNullValue - 是否忽略值为空的字段public static Map<String,Object> beanToMap(Object bean, Map<String,Object> targetMap, boolean ignoreNullValue, Editor<String> keyEditor)
Editor 可以自定义字段值,如果这个Editor返回null则忽略这个字段,以便实现:
1. 字段筛选,可以去除不需要的字段 2. 字段变换,例如实现驼峰转下划线 3. 自定义字段前缀或后缀等等
bean - bean对象targetMap - 目标的MapignoreNullValue - 是否忽略值为空的字段keyEditor - 属性字段(Map的key)编辑器,用于筛选、编辑keypublic static BeanDesc getBeanDesc(Class<?> clazz)
BeanDesc Bean描述信息clazz - Bean类public static ClassLoader getClassLoader()
ClassLoader
获取顺序如下:
1、获取当前线程的ContextClassLoader 2、获取ClassUtils类对应的ClassLoader 3、获取系统ClassLoader(ClassLoader.getSystemClassLoader())
public static String getClassPath()
public static String getClassPath(boolean isEncoded)
isEncoded - 是否编码路径中的中文public static URL getClassPathURL()
public static URL getResourceURL(String resource) throws InstrumentException
config/a/db.config spring/xml/test.xml
resource - 资源(相对Classpath的路径)InstrumentException - 异常ResourceUtils.getResource(String)public static <T> T fillBean(T bean,
ValueProvider<String> valueProvider,
CopyOptions copyOptions)
T - Bean类型bean - BeanvalueProvider - 值提供者copyOptions - 拷贝选项,见 CopyOptionspublic static ClassLoader getContextClassLoader()
ClassLoaderThread.getContextClassLoader()public static <T> Class<T> loadClass(String name) throws InstrumentException
Class.forName(String, boolean, ClassLoader)方法,支持以下几类类名的加载:
1、原始类型,例如:int 2、数组类型,例如:int[]、Long[]、String[] 3、内部类,例如:java.lang.Thread.State会被转为java.lang.Thread$State加载
T - 对象name - 类名InstrumentException - 没有类名对应的类时抛出此异常public static <T> Class<T> loadClass(String name, boolean isInitialized) throws InstrumentException
Class.forName(String, boolean, ClassLoader)方法,支持以下几类类名的加载:
1、原始类型,例如:int 2、数组类型,例如:int[]、Long[]、String[] 3、内部类,例如:java.lang.Thread.State会被转为java.lang.Thread$State加载
T - 对象name - 类名isInitialized - 是否初始化类(调用static模块内容和初始化static属性)InstrumentException - 没有类名对应的类时抛出此异常public static Class<?> loadClass(String name, ClassLoader classLoader, boolean isInitialized) throws InstrumentException
Class.forName(String, boolean, ClassLoader)方法,支持以下几类类名的加载:
1、原始类型,例如:int 2、数组类型,例如:int[]、Long[]、String[] 3、内部类,例如:java.lang.Thread.State会被转为java.lang.Thread$State加载
name - 类名classLoader - ClassLoader,null 则使用系统默认ClassLoaderisInitialized - 是否初始化类(调用static模块内容和初始化static属性)InstrumentException - 没有类名对应的类时抛出此异常public static Class<?> loadPrimitiveClass(String name)
name - 原始类型名,比如 intpublic static JarLoaders getJarClassLoader(File jarOrDir)
JarLoaders,并使用此Classloader加载目录下的class文件和jar文件jarOrDir - jar文件或者包含jar和class文件的目录JarLoaderspublic static Class<?> loadClass(File jarOrDir, String name)
jarOrDir - jar文件或者包含jar和class文件的目录name - 类名public static boolean isPresent(String className)
loadClass(String, ClassLoader, boolean)方法尝试加载指定类名的类,如果加载失败返回false
加载失败的原因可能是此类不存在或其关联引用类不存在className - 类名public static boolean isPresent(String className, ClassLoader classLoader)
loadClass(String, ClassLoader, boolean)方法尝试加载指定类名的类,如果加载失败返回false
加载失败的原因可能是此类不存在或其关联引用类不存在className - 类名classLoader - ClassLoaderpublic static String getPackageName(Class<?> clazz)
java.lang.String 字符串类clazz - 类public static String getPackageName(String className)
java.lang.String 字符串类.className - 完整的类名public static Class<?> forName(String name, ClassLoader classLoader) throws ClassNotFoundException, LinkageError
Class. forname(),它也返回原语的类实例(例如“int”)和数组类名(例如“[]”).
还能够以Java源代码风格解析内部类名(例如,“java.lang.Thread 用" State"代替"java.lang.Thread$State").name - 类的名称classLoader - 要使用的类装入器(可能是null,表示默认的类装入器)ClassNotFoundException - 如果没有找到该类LinkageError - 如果无法加载类文件public static ClassLoader getDefaultClassLoader()
public static String getShortClassName(Object object, String valueIfNull)
Class的包名object - 要获取其短名称的类可能为空valueIfNull - 如果为空,返回的值public static String getShortClassName(Class<?> cls)
Class中获取类名减去包名.cls - 类的短名称.public static String getShortClassName(String className)
className - 获取短名称的类名public static String getSimpleName(Class<?> cls)
cls - 要为其获取简单名称的类;可能是零Class.getSimpleName()public static String getSimpleName(Class<?> cls, String valueIfNull)
cls - 要为其获取简单名称的类valueIfNull - 如果为空,返回的值Class.getSimpleName()public static String getSimpleName(Object object)
object - 获取简单类名的对象;可能是零Class.getSimpleName()public static String getSimpleName(Object object, String valueIfNull)
object - 要为其获取简单名称的对象valueIfNull - 对象或者nullClass.getSimpleName()public static Class<?> primitiveToWrapper(Class<?> cls)
cls - 要转换的类可以为nullnull,则返回cls,
否则返回cls 的包装器类public static Class<?>[] primitivesToWrappers(Class<?>... classes)
classes - 要转换的类数组可以为空或空null如果输入为空。如果传入的是空数组,则为空数组.public static Class<?> wrapperToPrimitive(Class<?> cls)
cls - 要转换的类,可以是nullcls是包装类,否则nullprimitiveToWrapper(Class)public static Class<?>[] wrappersToPrimitives(Class<?>... classes)
classes - 要转换的类数组可以为空或空null如果输入为空。如果传入的是空数组,则为空数组.wrapperToPrimitive(Class)public static List<Class<?>> getAllInterfaces(Class<?> cls)
List 类及其超类.cls - 要查找的类可能是nullList按顺序排列,null如果输入为空public static void getAllInterfaces(Class<?> cls, HashSet<Class<?>> interfacesFound)
cls - 要查找的类可能是nullinterfacesFound - 类接口的Setpublic static List<Class<?>> getAllSuperclasses(Class<?> cls)
List.cls - 要查找的类可能是nullList从这个null开始,如果输入为空public static Iterable<Class<?>> hierarchy(Class<?> type)
Iterable,它可以按照从子类到超类的升序遍历类层次结构,不包括接口.type - 获取类层次结构的类型public static Iterable<Class<?>> hierarchy(Class<?> type, ClassUtils.Interfaces interfacesBehavior)
Iterable,它可以按照从子类到超类的升序遍历类层次结构.type - 获取类层次结构的类型interfacesBehavior - 指示是否包含或排除接口的开关public static boolean isPrimitiveOrWrapper(Class<?> type)
public static boolean isUserLevelMethod(Method method)
public static String convertClassNameToResourcePath(String className)
className - 完整雷鸣public static String getClassVar(String className)
className - 类名称public static List<Field> getAllFieldList(Class clazz)
clazz - 类public static <T> T newInstance(Class<T> clazz)
T - 泛型clazz - 类public static List<Method> getAllFieldsReadMethods(Class clazz) throws IntrospectionException
clazz - 类信息IntrospectionException - if anypublic static Object invokeMethod(Object object, String methodName) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException
此方法将委托给 getMatchingAccessibleMethod(Class, String, Class[]).
这是包装器invokeMethod(Object object, String methodName, Object[] args, Class[] parameterTypes).
object - 调用此对象上的方法methodName - 具有此名称的get方法NoSuchMethodException - 如果没有这样的可访问方法InvocationTargetException - 包装由调用的方法引发的异常IllegalAccessException - 如果请求的方法不能通过反射访问public static Object invokeMethod(Object object, boolean forceAccess, String methodName) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException
此方法将委托给 getMatchingAccessibleMethod(Class, String, Class[]).
这是包装器invokeMethod(Object object, String methodName, Object[] args, Class[] parameterTypes).
object - 调用此对象上的方法forceAccess - 强制访问调用方法,即使该方法不可访问methodName - 具有此名称的get方法NoSuchMethodException - 如果没有这样的可访问方法InvocationTargetException - 包装由调用的方法引发的异常IllegalAccessException - 如果请求的方法不能通过反射访问public static Object invokeMethod(Object object, String methodName, Object... args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException
此方法将委托给 getMatchingAccessibleMethod(Class, String, Class[]).
这是包装器invokeMethod(Object object, String methodName, Object[] args, Class[] parameterTypes).
object - 调用此对象上的方法methodName - 具有此名称的get方法args - 参数信息NoSuchMethodException - 如果没有这样的可访问方法InvocationTargetException - 包装由调用的方法引发的异常IllegalAccessException - 如果请求的方法不能通过反射访问public static Object invokeMethod(Object object, boolean forceAccess, String methodName, Object... args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException
object - 调用此对象上的方法forceAccess - 强制访问调用方法,即使该方法不可访问methodName - 具有此名称的get方法args - 参数信息NoSuchMethodException - 如果没有这样的可访问方法InvocationTargetException - 包装由调用的方法引发的异常IllegalAccessException - 如果请求的方法不能通过反射访问public static Object invokeMethod(Object object, boolean forceAccess, String methodName, Object[] args, Class<?>[] parameterTypes) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException
object - 调用此对象上的方法forceAccess - 强制访问调用方法,即使该方法不可访问methodName - 具有此名称的get方法args - 参数信息parameterTypes - 参数类型NoSuchMethodException - 如果没有这样的可访问方法InvocationTargetException - 包装由调用的方法引发的异常IllegalAccessException - 如果请求的方法不能通过反射访问public static Object invokeMethod(Object object, String methodName, Object[] args, Class<?>[] parameterTypes) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException
object - 调用此对象上的方法methodName - 具有此名称的get方法args - 参数信息parameterTypes - 参数类型NoSuchMethodException - 如果没有这样的可访问方法InvocationTargetException - 包装由调用的方法引发的异常IllegalAccessException - 如果请求的方法不能通过反射访问public static Object invokeExactMethod(Object object, String methodName) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException
object - 调用此对象上的方法methodName - 具有此名称的get方法NoSuchMethodException - 如果没有这样的可访问方法InvocationTargetException - 包装由调用的方法引发的异常IllegalAccessException - 如果请求的方法不能通过反射访问public static Object invokeExactMethod(Object object, String methodName, Object... args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException
object - 调用此对象上的方法methodName - 具有此名称的get方法args - 参数信息NoSuchMethodException - 如果没有这样的可访问方法InvocationTargetException - 包装由调用的方法引发的异常IllegalAccessException - 如果请求的方法不能通过反射访问public static Object invokeExactMethod(Object object, String methodName, Object[] args, Class<?>[] parameterTypes) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException
object - 调用此对象上的方法methodName - 具有此名称的get方法args - 参数信息parameterTypes - 参数类型NoSuchMethodException - 如果没有这样的可访问方法InvocationTargetException - 包装由调用的方法引发的异常IllegalAccessException - 如果请求的方法不能通过反射访问public static Object invokeExactStaticMethod(Class<?> cls, String methodName, Object[] args, Class<?>[] parameterTypes) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException
static方法cls - 调用该类上的静态方法methodName - 具有此名称的get方法args - 参数信息parameterTypes - 参数类型NoSuchMethodException - 如果没有这样的可访问方法InvocationTargetException - 包装由调用的方法引发的异常IllegalAccessException - 如果请求的方法不能通过反射访问public static Object invokeStaticMethod(Class<?> cls, String methodName, Object... args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException
static的方法,该方法的参数类型与对象类型匹配cls - 调用该类上的静态方法methodName - 具有此名称的get方法args - 参数信息NoSuchMethodException - 如果没有这样的可访问方法InvocationTargetException - 包装由调用的方法引发的异常IllegalAccessException - 如果请求的方法不能通过反射访问public static Object invokeStaticMethod(Class<?> cls, String methodName, Object[] args, Class<?>[] parameterTypes) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException
static的方法,该方法的参数类型与对象类型匹配cls - 调用该类上的静态方法methodName - 具有此名称的get方法args - 参数信息parameterTypes - 参数类型NoSuchMethodException - 如果没有这样的可访问方法InvocationTargetException - 包装由调用的方法引发的异常IllegalAccessException - 如果请求的方法不能通过反射访问public static Object invokeExactStaticMethod(Class<?> cls, String methodName, Object... args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException
static方法cls - 调用该类上的静态方法methodName - 具有此名称的get方法args - 参数信息NoSuchMethodException - 如果没有这样的可访问方法InvocationTargetException - 包装由调用的方法引发的异常IllegalAccessException - 如果请求的方法不能通过反射访问public static Method getAccessibleMethod(Class<?> cls, String methodName, Class<?>... parameterTypes)
cls - 从这个类获取方法methodName - 具有此名称的get方法parameterTypes - 参数类型public static Method getAccessibleMethod(Method method)
nullmethod - 我们希望调用的方法public static Method getMatchingAccessibleMethod(Class<?> cls, String methodName, Class<?>... parameterTypes)
cls - 在这个类中查找方法methodName - 使用此名称查找方法parameterTypes - 寻找参数最一致的方法public static Method getMatchingMethod(Class<?> cls, String methodName, Class<?>... parameterTypes)
cls - 在这个类中查找方法methodName - 使用此名称查找方法parameterTypes - 寻找参数最一致的方法public static Set<Method> getOverrideHierarchy(Method method, ClassUtils.Interfaces interfacesBehavior)
result,其中包含泛型.method - 方法信息interfacesBehavior - 接口,nullpublic static Method[] getMethodsWithAnnotation(Class<?> cls, Class<? extends Annotation> annotationCls)
cls - 要查询的 ClassannotationCls - 必须在要匹配的方法上出现的 Annotationpublic static List<Method> getMethodsListWithAnnotation(Class<?> cls, Class<? extends Annotation> annotationCls)
cls - 要查询的 ClassannotationCls - 必须在要匹配的方法上出现的 Annotationpublic static Method[] getMethodsWithAnnotation(Class<?> cls, Class<? extends Annotation> annotationCls, boolean searchSupers, boolean ignoreAccess)
cls - 要查询的 ClassannotationCls - 必须在要匹配的方法上出现的 AnnotationsearchSupers - 确定是否应在给定类的整个继承层次结构中执行查找ignoreAccess - 确定是否应该考虑非公共方法public static List<Method> getMethodsListWithAnnotation(Class<?> cls, Class<? extends Annotation> annotationCls, boolean searchSupers, boolean ignoreAccess)
cls - 要查询的 ClassannotationCls - 必须在要匹配的方法上出现的 AnnotationsearchSupers - 确定是否应在给定类的整个继承层次结构中执行查找ignoreAccess - 确定是否应该考虑非公共方法public static <A extends Annotation> A getAnnotation(Method method, Class<A> annotationCls, boolean searchSupers, boolean ignoreAccess)
A - 注解类型method - 要查询的 Method to queryannotationCls - 必须在要匹配的方法上出现的 AnnotationsearchSupers - 确定是否应在给定类的整个继承层次结构中执行查找ignoreAccess - 确定是否应该考虑非公共方法public static Field getField(Class<?> cls, String fieldName)
Field范围cls - 要反射的Class 不能是nullfieldName - 要获取的字段名public static Field getField(Class<?> cls, String fieldName, boolean forceAccess)
Field,如果请求则中断作用域.cls - 要反映的Class不能是nullfieldName - 要获取的字段名forceAccess - 是否使用AccessibleObject.setAccessible(boolean) 方法打破范围限制.
false将只匹配public字段public static Field getDeclaredField(Class<?> clazz, String fieldName)
clazz - 被查找字段的类fieldName - 字段名public static Field getDeclaredField(Class<?> clazz, String fieldName, boolean forceAccess)
Field,如果请求则中断作用域。只考虑指定的类clazz - 被查找字段的类fieldName - 字段名forceAccess - 是否使用AccessibleObject.setAccessible(boolean)方法打破范围限制.false将只匹配public字段public static Field[] getAllFields(Class<?> cls)
cls - 要查询的 Classpublic static List<Field> getAllFieldsList(Class<?> cls)
cls - 要查询的 Classpublic static Field[] getFieldsWithAnnotation(Class<?> cls, Class<? extends Annotation> annotationCls)
cls - 要查询的 ClassannotationCls - 必须在要匹配的方法上出现的 Annotationpublic static List<Field> getFieldsListWithAnnotation(Class<?> cls, Class<? extends Annotation> annotationCls)
cls - 要查询的 ClassannotationCls - 必须在要匹配的方法上出现的 Annotationpublic static Object readStaticField(Field field) throws IllegalAccessException
static Field.field - 字段信息IllegalAccessException - 如果字段不可访问public static Object readStaticField(Field field, boolean forceAccess) throws IllegalAccessException
Field.field - 字段信息forceAccess - 是否使用 AccessibleObject.setAccessible(boolean)
方法打破范围限制IllegalAccessException - 如果字段不可访问public static Object readStaticField(Class<?> cls, String fieldName) throws IllegalAccessException
public static Field。将考虑超类.cls - 要反映的Class不能是nullfieldName - 要获取的字段名IllegalAccessException - 如果字段不可访问public static Object readStaticField(Class<?> cls, String fieldName, boolean forceAccess) throws IllegalAccessException
static Field,将考虑超类cls - 要反映的Class不能是nullfieldName - 要获取的字段名forceAccess - 是否使用AccessibleObject.setAccessible(boolean)
方法打破范围限制.false将只匹配public字段IllegalAccessException - 如果字段不可访问public static Object readDeclaredStaticField(Class<?> cls, String fieldName) throws IllegalAccessException
cls - 要反映的Class不能是nullfieldName - 要获取的字段名IllegalAccessException - 如果字段不可访问public static Object readDeclaredStaticField(Class<?> cls, String fieldName, boolean forceAccess) throws IllegalAccessException
cls - 要反映的Class不能是nullfieldName - 要获取的字段名forceAccess - 是否使用AccessibleObject.setAccessible(boolean)
方法打破范围限制.false将只匹配public字段IllegalAccessException - 如果字段不可访问public static Object readField(Field field, Object target) throws IllegalAccessException
Field.field - 要使用的字段target - 要调用的对象可以是null,用于static字段IllegalAccessException - 如果字段不可访问public static Object readField(Field field, Object target, boolean forceAccess) throws IllegalAccessException
Field.field - 要使用的字段target - 要调用的对象可以是null,用于static字段forceAccess - 是否使用AccessibleObject.setAccessible(boolean)
方法打破范围限制.IllegalAccessException - 如果字段不可访问public static Object readField(Object target, String fieldName) throws IllegalAccessException
public Field. Superclasses will be considered.target - target 要调用的对象可以是null,用于static字段fieldName - 要获取的字段名IllegalAccessException - 如果字段不可访问public static Object readField(Object target, String fieldName, boolean forceAccess) throws IllegalAccessException
Field 将考虑超类.target - target 要调用的对象可以是null,用于static字段fieldName - 要获取的字段名forceAccess - 是否使用AccessibleObject.setAccessible(boolean)
方法打破范围限制.false将只匹配public字段IllegalAccessException - 如果字段不可访问public static Object readDeclaredField(Object target, String fieldName) throws IllegalAccessException
public Field 只考虑指定对象的类.target - target 要调用的对象可以是null,用于static字段fieldName - 要获取的字段名IllegalAccessException - 如果字段不可访问public static Object readDeclaredField(Object target, String fieldName, boolean forceAccess) throws IllegalAccessException
Field值 只考虑指定对象的类.target - target 要调用的对象可以是null,用于static字段fieldName - 要获取的字段名forceAccess - 是否使用AccessibleObject.setAccessible(boolean)
方法打破范围限制.false将只匹配public字段IllegalAccessException - 如果字段不可访问public static void writeStaticField(Field field, Object value) throws IllegalAccessException
public static Field.field - 字段value - 值IllegalAccessException - 如果字段不是public或finalpublic static void writeStaticField(Field field, Object value, boolean forceAccess) throws IllegalAccessException
Field.field - 字段value - 值forceAccess - 是否使用AccessibleObject.setAccessible(boolean)
方法打破范围限制 false将只匹配public字段IllegalAccessException - 如果字段不是public或finalpublic static void writeStaticField(Class<?> cls, String fieldName, Object value) throws IllegalAccessException
public static Field 将考虑超类cls - 查找的类ClassfieldName - 字段名value - 值IllegalAccessException - 如果字段不是public或finalpublic static void writeStaticField(Class<?> cls, String fieldName, Object value, boolean forceAccess) throws IllegalAccessException
static Field 将考虑超类.cls - 查找的类ClassfieldName - 字段名value - 值forceAccess - 是否使用AccessibleObject.setAccessible(boolean)
方法打破范围限制 false将只匹配public字段IllegalAccessException - 如果字段不是public或finalpublic static void writeDeclaredStaticField(Class<?> cls, String fieldName, Object value) throws IllegalAccessException
public static Field 只考虑指定的类.cls - 查找的类ClassfieldName - 字段名value - 值IllegalAccessException - 如果字段不是public或finalpublic static void writeDeclaredStaticField(Class<?> cls, String fieldName, Object value, boolean forceAccess) throws IllegalAccessException
static Field只考虑指定的类。cls - 查找的类ClassfieldName - 字段名value - 值forceAccess - 是否使用AccessibleObject.setAccessible(boolean)
方法打破范围限制 false将只匹配public字段.IllegalAccessException - 如果字段不是public或finalpublic static void writeField(Field field, Object target, Object value) throws IllegalAccessException
Field.field - 字段target - 要调用的对象可以是null,用于static字段value - 值IllegalAccessException - 如果字段或目标是null,那么该字段是不可访问的,
或者是final,或者value是不可分配的public static void writeField(Field field, Object target, Object value, boolean forceAccess) throws IllegalAccessException
Field.field - 字段target - 要调用的对象可以是null,用于static字段value - 值forceAccess - 是否使用AccessibleObject.setAccessible(boolean)
方法打破范围限制 false将只匹配public字段IllegalAccessException - 如果字段不可访问或finalpublic static void removeFinalModifier(Field field)
Field.field - 删除最后的修改器IllegalArgumentException - 如果字段是nullpublic static void removeFinalModifier(Field field, boolean forceAccess)
Field.field - 字段属性forceAccess - 是否使用AccessibleObject.setAccessible(boolean)
方法打破范围限制 false将只匹配public字段.IllegalArgumentException - 如果字段是nullpublic static void writeField(Object target, String fieldName, Object value) throws IllegalAccessException
public Field 将考虑超类target - 目标对象不能是nullfieldName - 要获取的字段名value - 值信息IllegalAccessException - 如果字段不可访问public static void writeField(Object target, String fieldName, Object value, boolean forceAccess) throws IllegalAccessException
public Field 将考虑超类.target - 目标对象不能是nullfieldName - 要获取的字段名value - 值信息forceAccess - 是否使用AccessibleObject.setAccessible(boolean)
方法打破范围限制 false将只匹配public字段.IllegalAccessException - 如果字段不可访问public static void writeDeclaredField(Object target, String fieldName, Object value) throws IllegalAccessException
public Field 只考虑指定的类.target - 目标对象不能是nullfieldName - 要获取的字段名value - 值信息IllegalAccessException - 如果字段不可访问public static void writeDeclaredField(Object target, String fieldName, Object value, boolean forceAccess) throws IllegalAccessException
public Field 只考虑指定的类.target - 目标对象不能是nullfieldName - 要获取的字段名value - 值信息forceAccess - 是否使用AccessibleObject.setAccessible(boolean)
方法打破范围限制 false将只匹配public字段.IllegalAccessException - 如果字段不可访问Copyright © 2019. All rights reserved.