Package com.imyeyu.java.ref
Class Ref
java.lang.Object
com.imyeyu.java.ref.Ref
反射工具类,提供字段与方法查找、字段读写、字符串转枚举等能力
- Since:
- 2023-05-04 15:05
- Author:
- 夜雨
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic RefField创建字段反射元信息对象static FieldgetClassField(Class<?> objectClass, String fieldName) 反射获取类字段static <T> TgetClassFieldValue(Object object, Class<?> objectClass, String fieldName, Class<T> toClass) 反射获取指定类字段值static Field反射获取对象字段,包括父级类,直至Object,如果都不存在则抛出异常static StringgetFieldName(String keyName) 将外部键名转换为 Java 字段名static <T> TgetFieldValue(Object object, Field field, Class<? extends T> toClass) 反射获取对象字段值static <T> TgetFieldValue(Object object, String fieldName, Class<? extends T> toClass) 反射获取对象字段值,包括父级类,直至Objectstatic Method反射查找方法,包括父级类,直至Object,如果都不存在则返回 nulllistAllFields(Class<?> clazz) 获取指定类及其父类声明的字段列表(直到Object之前)listFields(Class<?> clazz) 获取指定类声明的字段列表(不包含父类)static <T> TnewInstance(Class<T> type) 通过无参构造器创建实例static voidsetClassFieldValue(Object object, Class<?> objectClass, String fieldName, Object value) 反射设置对象字段值static voidsetFieldValue(Object object, Field field, Object value) 反射设置对象字段值static voidsetFieldValue(Object object, String fieldName, Object value) 反射设置对象字段值,包括父级类,直至Objectstatic <T extends Enum<?>>
T字符串转枚举
-
Constructor Details
-
Ref
public Ref()
-
-
Method Details
-
listFields
获取指定类声明的字段列表(不包含父类)- Parameters:
clazz- 类型对象- Returns:
- 字段列表
-
listAllFields
获取指定类及其父类声明的字段列表(直到Object之前)- Parameters:
clazz- 类型对象- Returns:
- 字段列表
-
getFieldName
将外部键名转换为 Java 字段名- Parameters:
keyName- 外部键名,支持中划线、下划线和空格分隔- Returns:
- 驼峰命名字段名
-
getField
反射获取对象字段,包括父级类,直至Object,如果都不存在则抛出异常- Parameters:
clazz- 类fieldName- 字段名- Returns:
- 字段对象
- Throws:
NullPointerException- 找不到字段时抛出异常
-
getFieldValue
public static <T> T getFieldValue(Object object, String fieldName, Class<? extends T> toClass) throws IllegalAccessException, NullPointerException 反射获取对象字段值,包括父级类,直至Object- Type Parameters:
T- 返回类型- Parameters:
object- 对象fieldName- 字段名toClass- 返回类- Returns:
- 字段值
- Throws:
IllegalAccessException- 反射访问失败NullPointerException- 向上反射直至Object也找不到该字段
-
getFieldValue
public static <T> T getFieldValue(Object object, Field field, Class<? extends T> toClass) throws IllegalAccessException, NullPointerException 反射获取对象字段值- Type Parameters:
T- 返回类型- Parameters:
object- 对象field- 字段toClass- 返回类- Returns:
- 字段值
- Throws:
IllegalAccessException- 反射访问失败NullPointerException- 字段对象为空
-
getClassField
反射获取类字段- Parameters:
objectClass- 类fieldName- 字段名- Returns:
- 字段对象,不存在时返回 null
-
getClassFieldValue
public static <T> T getClassFieldValue(Object object, Class<?> objectClass, String fieldName, Class<T> toClass) throws IllegalAccessException, NoSuchFieldException 反射获取指定类字段值- Type Parameters:
T- 值类型- Parameters:
object- 对象objectClass- 类fieldName- 字段名toClass- 值类型- Returns:
- 字段值
- Throws:
IllegalAccessException- 反射访问失败NoSuchFieldException- 字段不存在
-
setFieldValue
public static void setFieldValue(Object object, String fieldName, Object value) throws IllegalAccessException 反射设置对象字段值,包括父级类,直至Object- Parameters:
object- 对象fieldName- 字段名value- 字段值- Throws:
IllegalAccessException- 反射访问失败
-
setFieldValue
public static void setFieldValue(Object object, Field field, Object value) throws IllegalAccessException 反射设置对象字段值- Parameters:
object- 对象field- 字段对象value- 字段值- Throws:
IllegalAccessException- 反射访问失败
-
setClassFieldValue
public static void setClassFieldValue(Object object, Class<?> objectClass, String fieldName, Object value) throws IllegalAccessException, NullPointerException 反射设置对象字段值- Parameters:
object- 对象objectClass- 类fieldName- 字段名value- 字段值- Throws:
IllegalAccessException- 反射访问失败NullPointerException- 字段不存在
-
getMethod
反射查找方法,包括父级类,直至Object,如果都不存在则返回 null- Parameters:
clazz- 类methodName- 方法名parameterTypes- 可选参- Returns:
- 方法对象,不存在时返回 null
- Throws:
NullPointerException- 类对象为空
-
toType
字符串转枚举- Type Parameters:
T- 泛型- Parameters:
clazz- 枚举类string- 字符串- Returns:
- 匹配到的枚举值,找不到或输入为空时返回 null
- Throws:
IllegalArgumentException- 传入类型不是枚举类型
-
field
创建字段反射元信息对象- Parameters:
owner- 字段所属类型keyName- 字段键名- Returns:
- 字段反射元信息
-
newInstance
通过无参构造器创建实例- Type Parameters:
T- 泛型类型- Parameters:
type- 类型对象- Returns:
- 新实例
- Throws:
Exception- 反射创建实例异常
-