简介
本文介绍Spring的ReflectionUtils的使用。
ReflectionUtils工具类的作用:便利地进行反射操作。
Spring还有一个工具类:ReflectUtils,它们在功能上的最大区别是:ReflectUtils可以获取 type类的所有属性描述(此类和父类的所有字段(包括private)),但ReflectionUtils无法获得父类private的字段。
方法大全
获取Method
方法 | 说明 |
Method findMethod(Class<?> clazz, String name) | 在类中查找指定方法 |
Method findMethod(Class<?> clazz, String name, Class<?>… paramTypes) | 同上,额外提供方法参数类型作查找条件 |
Method[] getAllDeclaredMethods(Class<?> leafClass) | 获得类中所有方法,包括继承而来的 |
Constructor accessibleConstructor(Class clazz, Class<?>… parameterTypes) | 在类中查找指定构造方法 |
boolean isEqualsMethod(Method method) | 是否是 equals() 方法 |
boolean isHashCodeMethod(Method method) | 是否是 hashCode() 方法 |
boolean isToStringMethod(Method method) | 是否是 toString() 方法 |
boolean isObjectMethod(Method method) | 是否是从 Object 类继承而来的方法 |
boolean declaresException(Method method, Class<?> exceptionType) | 检查一个方法是否声明抛出指定异常 |
调用Method
方法 | 说明 |
Object invokeMethod(Method method, Object target) | 执行方法 |
Object invokeMethod(Method method, Object target, Object… args) | 同上,提供方法参数 |
void makeAccessible(Method method) | 取消 Java 权限检查。以便后续执行该私有方法 |
void makeAccessible(Constructor<?> ctor) | 取消 Java 权限检查。以便后续执行私有构造方法 |
获取Field
方法 | 说明 |
Field findField(Class<?> clazz, String name) | 在类中查找指定属性。(可获得父类private的字段) |
Field findField(Class<?> clazz, String name, Class<?> type) | 同上,多提供了属性的类型 |
boolean isPublicStaticFinal(Field field) | 是否为一个 “public static final” 属性 |
设置Field
方法 | 说明 |
Object getField(Field field, Object target) | 获取 target 对象的 field 属性值 |
void setField(Field field, Object target, Object value) | 设置 target 对象的 field 属性值,值为 value |
void shallowCopyFieldState(Object src, Object dest) | 同类对象属性对等赋值 |
void makeAccessible(Field field) | 取消 Java 的权限控制检查。以便后续读写该私有属性 |
void doWithFields(Class<?> clazz, ReflectionUtils.FieldCallback fc) | 对类的每个属性执行 callback |
void doWithFields(Class<?> clazz, ReflectionUtils.FieldCallback fc,ReflectionUtils.FieldFilter ff) | 同上,多了个属性过滤功能。 |
void doWithLocalFields(Class<?> clazz, ReflectionUtils.FieldCallback fc) | 同上,但不包括继承而来的属性 |
请先
!