Package cn.yusiwen.commons.mapper
Class ReflectUtil
java.lang.Object
cn.yusiwen.commons.mapper.ReflectUtil
反射工具类,提供对类、字段和方法的反射操作功能。
主要功能包括:
- 获取类的字段(包括父类继承的字段)
- 获取和设置字段值
- 调用对象方法
- 检查方法类型(equals/hashCode/toString等)
- Since:
- 1.0
- Author:
- Siwen Yu (yusiwen@gmail.com)
-
Method Summary
Modifier and TypeMethodDescriptionstatic voiddoWithFields(Class<?> clazz, Consumer<Field> consumer) 对指定类的所有字段执行consumer操作static Field获取指定类中指定名称的字段,包括父类中的字段。static Field获取指定类的指定field,包括父类static Field[]获取指定类的所有字段,包含父类继承的字段。static Field[]获取指定类的所有的field,包括父类static ObjectgetFieldValue(Object obj, String fieldName) 获取对象中指定field值static ObjectgetFieldValue(Field field, Object target) 获取字段值static ObjectgetValueByFieldPath(Object obj, String fieldPath) 获取指定对象中指定字段路径的值(类似js访问对象属性)
如:Product p = new Product(new User())
可使用ReflectionUtils.getValueByFieldPath(p, "user.name")获取到用户的name属性static ObjectinvokeMethod(Method method, Object target) 调用对象的无参数方法。static ObjectinvokeMethod(Method method, Object target, Object... args) 调用指定对象的方法static booleanisEqualsMethod(Method method) 判断给定的方法是否为Object类的equals方法。static booleanisHashCodeMethod(Method method) 判断给定的方法是否为Object类的hashCode方法。static booleanisToStringMethod(Method method) 判断给定的方法是否为Object类的toString方法。static voidmakeAccessible(Field field) 设置字段为可访问,主要用于访问私有字段。static voidmakeAccessible(Method method) 设置方法可见性static voidsetFieldValue(Field field, Object target, Object value) 设置字段值
-
Method Details
-
getFields
获取指定类的所有字段,包含父类继承的字段。- Parameters:
clazz- 要获取字段的类- Returns:
- 类的所有字段数组
-
getFields
获取指定类的所有的field,包括父类- Parameters:
clazz- 字段所属类型fieldFilter- 字段过滤器- Returns:
- 符合过滤器条件的字段数组
-
doWithFields
对指定类的所有字段执行consumer操作- Parameters:
clazz- 目标对象consumer- 对字段进行操作
-
getField
获取指定类中指定名称的字段,包括父类中的字段。- Parameters:
clazz- 要查找的类name- 字段名称- Returns:
- 找到的字段对象,如果未找到返回null
-
getField
获取指定类的指定field,包括父类- Parameters:
clazz- 字段所属类型name- 字段名type- field类型- Returns:
- Field对象
-
getFieldValue
获取字段值- Parameters:
field- 字段target- 字段所属实例对象- Returns:
- 字段值
-
getFieldValue
获取对象中指定field值- Parameters:
obj- 对象fieldName- 字段名- Returns:
- 字段值
-
getValueByFieldPath
获取指定对象中指定字段路径的值(类似js访问对象属性)
如:Product p = new Product(new User())
可使用ReflectionUtils.getValueByFieldPath(p, "user.name")获取到用户的name属性- Parameters:
obj- 取值对象fieldPath- 字段路径(形如 user.name)- Returns:
- 字段value
-
setFieldValue
设置字段值- Parameters:
field- 字段target- 字段所属对象实例value- 需要设置的值
-
makeAccessible
设置字段为可访问,主要用于访问私有字段。- Parameters:
field- 要设置的字段对象
-
invokeMethod
调用对象的无参数方法。- Parameters:
method- 要调用的方法对象target- 目标对象实例- Returns:
- 方法执行的返回结果
-
invokeMethod
调用指定对象的方法- Parameters:
method- 方法对象target- 调用对象args- 方法参数- Returns:
- 执行结果
-
makeAccessible
设置方法可见性- Parameters:
method- 方法
-
isEqualsMethod
判断给定的方法是否为Object类的equals方法。- Parameters:
method- 要检查的方法- Returns:
- 如果是equals方法返回true,否则返回false
- See Also:
-
isHashCodeMethod
判断给定的方法是否为Object类的hashCode方法。- Parameters:
method- 要检查的方法- Returns:
- 如果是hashCode方法返回true,否则返回false
- See Also:
-
isToStringMethod
判断给定的方法是否为Object类的toString方法。- Parameters:
method- 要检查的方法- Returns:
- 如果是toString方法返回true,否则返回false
- See Also:
-