ReflectionUtils源码解读

基于 Spring Framework 源码

ReflectionUtils

用于处理反射API和处理反射异常的简单实用程序类。

嵌套类摘要

嵌套类
修饰符和类型 类和描述
static interface ReflectionUtils.FieldCallback

在层次结构中的每个字段上调用回调接口。
static interface ReflectionUtils.FieldFilter

回调可选地用于过滤由字段回调操作的字段。
static interface ReflectionUtils.MethodCallback

对每种方法采取的行动。
static interface ReflectionUtils.MethodFilter

回调可选地用于过滤方法回调要操作的方法。

 

现场总结

字段
修饰符和类型 领域和描述
static ReflectionUtils FieldFilter COPYABLE_FIELDS

预构建的FieldFilter,匹配所有非静态非最终字段。
static ReflectionUtils MethodFilter NON_BRIDGED_METHODS

预构建的MethodFilter,匹配所有非桥接方法。
static ReflectionUtils MethodFilter USER_DECLARED_METHODS

预构建的MethodFilter,它匹配未在java.lang.Object声明的所有非桥非合成方法。

 

方法摘要

修饰符和类型 方法和描述

static <T> java.lang.reflect Constructor<T>
accessibleConstructor (java.lang.Class<T> clazz, java.lang.Class<?>… parameterTypes)

获取给定类和参数的可访问构造函数。
static void
clearCache ()

清除内部方法/字段缓存。
static boolean

判断一个方法上是否声明了指定类型的异常
declaresException (java.lang.reflect.Method method, java.lang.Class<?> exceptionType)

确定给定方法是显式声明给定的异常还是其中一个超类,这意味着该类型的异常可以在反射调用中按原样传播。
static void
doWithFields (java.lang.Class<?> clazz, ReflectionUtils.FieldCallback fc)

在目标类的所有字段上调用给定的回调,向上移动类层次结构以获取所有声明的字段。
static void
doWithFields (java.lang.Class<?> clazz, ReflectionUtils.FieldCallback fc, ReflectionUtils.FieldFilter ff)

在目标类的所有字段上调用给定的回调,向上移动类层次结构以获取所有声明的字段。
static void
doWithLocalFields (java.lang.Class<?> clazz, ReflectionUtils.FieldCallback fc)

在给定类的所有本地声明的字段上调用给定的回调。
static void
doWithLocalMethods (java.lang.Class<?> clazz, ReflectionUtils.MethodCallback mc)

对给定类的所有匹配方法执行给定的回调操作,如本地声明的或等效的(例如给定类实现的基于Java 8的接口上的默认方法)。
static void
doWithMethods (java.lang.Class<?> clazz, ReflectionUtils.MethodCallback mc)

对给定类和超类的所有匹配方法执行给定的回调操作。
static void
doWithMethods (java.lang.Class<?> clazz, ReflectionUtils.MethodCallback mc, ReflectionUtils.MethodFilter mf)

对给定类和超类(或给定的接口和超级接口)的所有匹配方法执行给定的回调操作。
static java.lang.reflect Field
findField (java.lang.Class<?> clazz, java.lang.String name)

尝试使用提供的name在提供的Class上查找field 。
static java.lang.reflect Field
findField (java.lang.Class<?> clazz, java.lang.String name, java.lang.Class<?> type)

尝试使用提供的name和/或type在提供的Class上查找field 。
static java.lang.reflect.Method
findMethod (java.lang.Class<?> clazz, java.lang.String name)

尝试使用提供的名称和没有参数在提供的类上查找Method 。
static java.lang.reflect.Method
findMethod (java.lang.Class<?> clazz, java.lang.String name, java.lang.Class<?>… paramTypes)

尝试使用提供的名称和参数类型在提供的类上查找Method 。
static java.lang.reflect.Method[]
getAllDeclaredMethods (java.lang.Class<?> leafClass)

获取叶类和所有超类的所有声明的方法。
static java.lang.Object
getField (java.lang.reflect.Field field, java.lang.Object target)

获取指定target object上提供的field object表示的field object 。
static java.lang.reflect.Method[]
getUniqueDeclaredMethods (java.lang.Class<?> leafClass)

在子类和所有超类上获取唯一的声明方法集。
static void
handleInvocationTargetException (java.lang.reflect.InvocationTargetException ex)

处理给定的调用目标异常。
static void
handleReflectionException (java.lang.Exception ex)

处理给定的反射异常。
static java.lang.Object
invokeJdbcMethod (java.lang.reflect.Method method, java.lang.Object target)

针对提供的目标对象调用指定的JDBC API Method ,不带参数。
static java.lang.Object
invokeJdbcMethod (java.lang.reflect.Method method, java.lang.Object target, java.lang.Object… args)

使用提供的参数针对提供的目标对象调用指定的JDBC API Method 。
static java.lang.Object
invokeMethod (java.lang.reflect.Method method, java.lang.Object target)

针对提供的目标对象调用指定的Method ,不带参数。
static java.lang.Object
invokeMethod (java.lang.reflect.Method method, java.lang.Object target, java.lang.Object… args)

使用提供的参数针对提供的目标对象调用指定的Method 。
static boolean
isCglibRenamedMethod (java.lang.reflect.Method renamedMethod)

确定给定方法是否是CGLIB’重命名’方法,遵循模式“CGLIB $ methodName $ 0”。
static boolean
isEqualsMethod (java.lang.reflect.Method method)

确定给定方法是否为“等于”方法。
static boolean
isHashCodeMethod (java.lang.reflect.Method method)

确定给定方法是否为“hashCode”方法。
static boolean
isObjectMethod (java.lang.reflect.Method method)

确定给定方法是否最初由Object声明。
static boolean
isPublicStaticFinal (java.lang.reflect.Field field)

确定给定字段是否为“公共静态最终”常量。
static boolean
isToStringMethod (java.lang.reflect.Method method)

确定给定方法是否为“toString”方法。
static void
makeAccessible (java.lang.reflect.Constructor<?> ctor)

使给定的构造函数可访问,必要时显式设置它是可访问的。
static void
makeAccessible (java.lang.reflect.Field field)

使给定字段可访问,如有必要,可明确设置它。
static void
makeAccessible (java.lang.reflect.Method method)

使给定方法可访问,必要时明确设置它可访问。
static void
rethrowException (java.lang.Throwable ex)

重新抛出给定的exception ,这可能是InvocationTargetException的目标异常 。
static void
rethrowRuntimeException (java.lang.Throwable ex)

重新抛出给定的exception ,这可能是InvocationTargetException的目标异常 。
static void
setField (java.lang.reflect.Field field, java.lang.Object target, java.lang.Object value)

将指定target object上提供的field object表示的字段设置为指定value 。
static void
shallowCopyFieldState (java.lang.Object src, java.lang.Object dest)

给定源对象和目标(必须是同一个类或子类),复制所有字段,包括继承的字段。