java.lang.Object
org.miaixz.bus.core.xyz.FieldKit
反射中
Field字段工具类,包括字段获取和字段赋值。- Since:
- Java 17+
- Author:
- Kimi Liu
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic FieldgetDeclaredField(Class<?> beanClass, String name) 获取本类定义的指定名称的字段,包括私有字段,但是不包括父类字段static Field[]getDeclaredFields(Class<?> beanClass, Predicate<Field> filter) 获得当前类声明的所有字段(包括非public字段),但不包括父类的字段static Field查找指定类中的指定name的字段(包括非public字段),也包括父类和Object类的字段, 字段不存在则返回nullgetFieldMap(Class<?> beanClass) 获取指定类中字段名和字段对应的有序Map,包括其父类中的字段 如果子类与父类中存在同名字段,则父类字段忽略static StringgetFieldName(Field field) 获取字段名,如果存在Alias注解,读取注解的值作为名称static StringgetFieldName(Field field, boolean useAlias) 获取字段名,可选是否使用Alias注解,读取注解的值作为名称static Field[]获得一个类中所有字段列表,包括其父类中的字段 如果子类与父类中存在同名字段,则这两个字段同时存在,子类字段在前,父类字段在后。static Field[]获得一个类中所有满足条件的字段列表,包括其父类中的字段 如果子类与父类中存在同名字段,则这两个字段同时存在,子类字段在前,父类字段在后。static ObjectgetFieldsAndValue(Object object) 获取所有字段及对应值static ObjectgetFieldsAndValue(Object object, Predicate<Field> filter) 获取所有字段及对应值static Field[]getFieldsDirectly(Class<?> beanClass, boolean withSuperClassFields) 获得一个类中所有字段列表,直接反射获取,无缓存 如果子类与父类中存在同名字段,则这两个字段同时存在,子类字段在前,父类字段在后。static Object[]getFieldsValue(Object object) 获取所有字段的值static Object[]getFieldsValue(Object object, Predicate<Field> filter) 获取所有字段的值static ObjectgetFieldValue(Object object, Field field) 获取字段值static ObjectgetFieldValue(Object object, String fieldName) 获取字段值static ObjectgetStaticFieldValue(Field field) 获取静态字段值static boolean查找指定类中是否包含指定名称对应的字段,包括所有字段(包括非public字段),也包括父类和Object类的字段static booleanisOuterClassField(Field field) 是否为父类引用字段 当字段所在类是对象子类时(对象中定义的非static的class),会自动生成一个以"this$0"为名称的字段,指向父类对象static booleanisSerialVersionUID(Field field) 给定类是否存在serialVersionUID字段static voidsetFieldValue(Object object, Field field, Object value) 设置字段值,如果值类型必须与字段类型匹配,会自动转换对象类型static voidsetFieldValue(Object object, Field field, Object value, Converter converter) 设置字段值,如果值类型必须与字段类型匹配,会自动转换对象类型static voidsetFieldValue(Object object, String fieldName, Object value) 设置字段值static voidsetStaticFieldValue(Field field, Object value) 设置静态(static)字段值
-
Constructor Details
-
FieldKit
public FieldKit()
-
-
Method Details
-
isOuterClassField
是否为父类引用字段 当字段所在类是对象子类时(对象中定义的非static的class),会自动生成一个以"this$0"为名称的字段,指向父类对象- Parameters:
field- 字段- Returns:
- 是否为父类引用字段
-
hasField
查找指定类中是否包含指定名称对应的字段,包括所有字段(包括非public字段),也包括父类和Object类的字段- Parameters:
beanClass- 被查找字段的类,不能为nullname- 字段名- Returns:
- 是否包含字段
- Throws:
SecurityException- 安全异常
-
getFieldName
获取字段名,如果存在Alias注解,读取注解的值作为名称- Parameters:
field- 字段- Returns:
- 字段名
-
getFieldName
获取字段名,可选是否使用Alias注解,读取注解的值作为名称- Parameters:
field- 字段useAlias- 是否检查并使用Alias注解- Returns:
- 字段名
-
getDeclaredField
获取本类定义的指定名称的字段,包括私有字段,但是不包括父类字段- Parameters:
beanClass- Bean的Classname- 字段名称- Returns:
- 字段对象,如果未找到返回
null
-
getField
查找指定类中的指定name的字段(包括非public字段),也包括父类和Object类的字段, 字段不存在则返回null- Parameters:
beanClass- 被查找字段的类,不能为nullname- 字段名- Returns:
- 字段
- Throws:
SecurityException- 安全异常
-
getFieldMap
获取指定类中字段名和字段对应的有序Map,包括其父类中的字段 如果子类与父类中存在同名字段,则父类字段忽略- Parameters:
beanClass- 类- Returns:
- 字段名和字段对应的Map,有序
-
getFields
获得一个类中所有字段列表,包括其父类中的字段 如果子类与父类中存在同名字段,则这两个字段同时存在,子类字段在前,父类字段在后。- Parameters:
beanClass- 类- Returns:
- 字段列表
- Throws:
SecurityException- 安全检查异常
-
getFields
public static Field[] getFields(Class<?> beanClass, Predicate<Field> filter) throws SecurityException 获得一个类中所有满足条件的字段列表,包括其父类中的字段 如果子类与父类中存在同名字段,则这两个字段同时存在,子类字段在前,父类字段在后。- Parameters:
beanClass- 类filter- field过滤器,过滤掉不需要的field,Predicate.test(Object)为true保留,null表示全部保留- Returns:
- 字段列表
- Throws:
SecurityException- 安全检查异常
-
getDeclaredFields
public static Field[] getDeclaredFields(Class<?> beanClass, Predicate<Field> filter) throws SecurityException 获得当前类声明的所有字段(包括非public字段),但不包括父类的字段- Parameters:
beanClass- 类filter- field过滤器,过滤掉不需要的field,Predicate.test(Object)为true保留,null表示全部保留- Returns:
- 字段列表
- Throws:
SecurityException- 安全检查异常
-
getFieldsDirectly
public static Field[] getFieldsDirectly(Class<?> beanClass, boolean withSuperClassFields) throws SecurityException 获得一个类中所有字段列表,直接反射获取,无缓存 如果子类与父类中存在同名字段,则这两个字段同时存在,子类字段在前,父类字段在后。- Parameters:
beanClass- 类withSuperClassFields- 是否包括父类的字段列表- Returns:
- 字段列表
- Throws:
SecurityException- 安全检查异常
-
getFieldValue
获取字段值- Parameters:
object- 对象,如果static字段,此处为类fieldName- 字段名- Returns:
- 字段值
- Throws:
InternalException- 包装IllegalAccessException异常
-
getStaticFieldValue
获取静态字段值- Parameters:
field- 字段- Returns:
- 字段值
- Throws:
InternalException- 包装IllegalAccessException异常
-
getFieldValue
获取字段值- Parameters:
object- 对象,static字段则此字段为nullfield- 字段- Returns:
- 字段值
- Throws:
InternalException- 包装IllegalAccessException异常
-
getFieldsValue
获取所有字段的值- Parameters:
object- bean对象,如果是static字段,此处为类class- Returns:
- 字段值数组
-
getFieldsValue
获取所有字段的值- Parameters:
object- bean对象,如果是static字段,此处为类classfilter- 字段过滤器,null返回原集合- Returns:
- 字段值数组
-
getFieldsAndValue
获取所有字段及对应值- Parameters:
object- bean对象,如果是static字段,此处为类class- Returns:
- 字段值数组
-
getFieldsAndValue
获取所有字段及对应值- Parameters:
object- bean对象,如果是static字段,此处为类classfilter- 字段过滤器,null返回原集合- Returns:
- 字段值数组
-
setFieldValue
public static void setFieldValue(Object object, String fieldName, Object value) throws InternalException 设置字段值- Parameters:
object- 对象,static字段则此处传ClassfieldName- 字段名value- 值,值类型必须与字段类型匹配,不会自动转换对象类型- Throws:
InternalException- 包装IllegalAccessException异常
-
setStaticFieldValue
设置静态(static)字段值- Parameters:
field- 字段value- 值,值类型必须与字段类型匹配,不会自动转换对象类型- Throws:
InternalException- 包装IllegalAccessException异常
-
setFieldValue
设置字段值,如果值类型必须与字段类型匹配,会自动转换对象类型- Parameters:
object- 对象,如果是static字段,此参数为nullfield- 字段value- 值,类型不匹配会自动转换对象类型- Throws:
InternalException- 包装IllegalAccessException异常
-
setFieldValue
public static void setFieldValue(Object object, Field field, Object value, Converter converter) throws InternalException 设置字段值,如果值类型必须与字段类型匹配,会自动转换对象类型- Parameters:
object- 对象,如果是static字段,此参数为nullfield- 字段value- 值,类型不匹配会自动转换对象类型converter- 转换器,用于转换给定value为字段类型,null表示不转换- Throws:
InternalException- 包装IllegalAccessException异常
-
isSerialVersionUID
给定类是否存在serialVersionUID字段- Parameters:
field- 字段- Returns:
- 是否存在serialVersionUID字段
-