所有分类
  • 所有分类
  • 未分类

Spring工具类-ReflectionUtils的使用

简介

本文介绍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)同上,但不包括继承而来的属性

0

评论0

请先

显示验证码
没有账号?注册  忘记密码?

社交账号快速登录