public class BeanUtil extends Object
把一个拥有对属性进行set和get方法的类,我们就可以称之为JavaBean。
| Constructor and Description |
|---|
BeanUtil() |
| Modifier and Type | Method and Description |
|---|---|
static Map<String,Object> |
beanToMap(Object bean,
boolean isToUnderlineCase,
boolean ignoreNullValue)
对象转Map
|
static Map<String,Object> |
beanToMap(Object bean,
Map<String,Object> targetMap,
boolean isToUnderlineCase,
boolean ignoreNullValue)
对象转Map
|
static Map<String,Object> |
beanToMap(Object bean,
Map<String,Object> targetMap,
boolean ignoreNullValue,
Editor<String> keyEditor)
对象转Map
通过实现 Editor 可以自定义字段值,如果这个Editor返回null则忽略这个字段,以便实现:
1. |
static Map<String,Object> |
beanToMap(Object bean,
Map<String,Object> targetMap,
CopyOptions copyOptions)
对象转Map
通过自定义 CopyOptions 完成抓换选项,以便实现:
1. |
static Map<String,Object> |
beanToMap(Object bean,
String... properties)
将bean的部分属性转换成map
可选拷贝哪些属性值,默认是不忽略值为 null的值的。 |
static <T> T |
copyProperties(Object source,
Class<T> tClass,
String... ignoreProperties)
按照Bean对象属性创建对应的Class对象,并忽略某些属性
|
static void |
copyProperties(Object source,
Object target,
boolean ignoreCase)
复制Bean对象属性
|
static void |
copyProperties(Object source,
Object target,
CopyOptions copyOptions)
复制Bean对象属性
限制类用于限制拷贝的属性,例如一个类我只想复制其父类的一些属性,就可以将editable设置为父类 |
static void |
copyProperties(Object source,
Object target,
String... ignoreProperties)
复制Bean对象属性
限制类用于限制拷贝的属性,例如一个类我只想复制其父类的一些属性,就可以将editable设置为父类 |
static <T> List<T> |
copyToList(Collection<?> collection,
Class<T> targetType)
复制集合中的Bean属性
此方法遍历集合中每个Bean,复制其属性后加入一个新的 List中。 |
static <T> List<T> |
copyToList(Collection<?> collection,
Class<T> targetType,
CopyOptions copyOptions)
复制集合中的Bean属性
此方法遍历集合中每个Bean,复制其属性后加入一个新的 List中。 |
static DynaBean |
createDynaBean(Object bean)
创建动态Bean
|
static void |
descForEach(Class<?> clazz,
Consumer<? super PropDesc> action)
遍历Bean的属性
|
static <T> T |
edit(T bean,
Editor<Field> editor)
编辑Bean的字段,static字段不会处理
例如需要对指定的字段做判空操作、null转""操作等等。 |
static <T> T |
fillBean(T bean,
ValueProvider<String> valueProvider,
CopyOptions copyOptions)
填充Bean的核心方法
|
static <T> T |
fillBeanWithMap(Map<?,?> map,
T bean,
boolean isIgnoreError)
使用Map填充Bean对象
|
static <T> T |
fillBeanWithMap(Map<?,?> map,
T bean,
boolean isToCamelCase,
boolean isIgnoreError)
Deprecated.
isToCamelCase参数无效,请使用
fillBeanWithMap(Map, Object, boolean) |
static <T> T |
fillBeanWithMap(Map<?,?> map,
T bean,
boolean isToCamelCase,
CopyOptions copyOptions)
Deprecated.
isToCamelCase参数无效,请使用
fillBeanWithMap(Map, Object, CopyOptions) |
static <T> T |
fillBeanWithMap(Map<?,?> map,
T bean,
CopyOptions copyOptions)
使用Map填充Bean对象
|
static <T> T |
fillBeanWithMapIgnoreCase(Map<?,?> map,
T bean,
boolean isIgnoreError)
使用Map填充Bean对象,忽略大小写
|
static PropertyEditor |
findEditor(Class<?> type)
查找类型转换器
PropertyEditor |
static BeanDesc |
getBeanDesc(Class<?> clazz)
获取
BeanDesc Bean描述信息 |
static String |
getFieldName(String getterOrSetterName)
获取Getter或Setter方法名对应的字段名称,规则如下:
getXxxx获取为xxxx,如getName得到name。
|
static Object |
getFieldValue(Object bean,
String fieldNameOrIndex)
获得字段值,通过反射直接获得字段值,并不调用getXXX方法
对象同样支持Map类型,fieldNameOrIndex即为key Map: fieldNameOrIndex需为key,获取对应value Collection: fieldNameOrIndex当为数字,返回index对应值,非数字遍历集合返回子bean对应name值 Array: fieldNameOrIndex当为数字,返回index对应值,非数字遍历数组返回子bean对应name值 |
static <T> T |
getProperty(Object bean,
String expression)
解析Bean中的属性值
|
static PropertyDescriptor |
getPropertyDescriptor(Class<?> clazz,
String fieldName)
获得Bean类属性描述,大小写敏感
|
static PropertyDescriptor |
getPropertyDescriptor(Class<?> clazz,
String fieldName,
boolean ignoreCase)
获得Bean类属性描述
|
static Map<String,PropertyDescriptor> |
getPropertyDescriptorMap(Class<?> clazz,
boolean ignoreCase)
获得字段名和字段描述Map,获得的结果会缓存在
BeanInfoCache中 |
static PropertyDescriptor[] |
getPropertyDescriptors(Class<?> clazz)
获得Bean字段描述数组
|
static boolean |
hasGetter(Class<?> clazz)
判断是否为Bean对象
判定方法是否存在只有无参数的getXXX方法或者isXXX方法 |
static boolean |
hasNullField(Object bean,
String... ignoreFieldNames)
判断Bean是否包含值为
null的属性对象本身为 null也返回true |
static boolean |
hasPublicField(Class<?> clazz)
指定类中是否有public类型字段(static字段除外)
|
static boolean |
hasSetter(Class<?> clazz)
判断是否有Setter方法
判定方法是否存在只有一个参数的setXXX方法 |
static boolean |
isBean(Class<?> clazz)
判断是否为Bean对象,判定方法是:
1、是否存在只有一个参数的setXXX方法
2、是否存在public类型的字段
|
static boolean |
isCommonFieldsEqual(Object source,
Object target,
String... ignoreProperties)
判断source与target的所有公共字段的值是否相同
|
static boolean |
isEmpty(Object bean,
String... ignoreFieldNames)
判断Bean是否为空对象,空对象表示本身为
null或者所有属性都为null此方法不判断static属性 |
static boolean |
isMatchName(Object bean,
String beanClassName,
boolean isSimple)
给定的Bean的类名是否匹配指定类名字符串
如果isSimple为 true,则只匹配类名而忽略包名,例如:cn.hutool.TestEntity只匹配TestEntity如果isSimple为 false,则匹配包括包名的全类名,例如:cn.hutool.TestEntity匹配cn.hutool.TestEntity |
static boolean |
isNotEmpty(Object bean,
String... ignoreFieldNames)
判断Bean是否为非空对象,非空对象表示本身不为
null或者含有非null属性的对象 |
static boolean |
isReadableBean(Class<?> clazz)
判断是否为可读的Bean对象,判定方法是:
1、是否存在只有无参数的getXXX方法或者isXXX方法
2、是否存在public类型的字段
|
static <T> T |
mapToBean(Map<?,?> map,
Class<T> beanClass,
boolean isIgnoreError)
Deprecated.
|
static <T> T |
mapToBean(Map<?,?> map,
Class<T> beanClass,
boolean isToCamelCase,
CopyOptions copyOptions)
Deprecated.
isToCamelCase参数无效,请使用
toBean(Object, Class, CopyOptions) |
static <T> T |
mapToBean(Map<?,?> map,
Class<T> beanClass,
CopyOptions copyOptions)
Deprecated.
|
static <T> T |
mapToBeanIgnoreCase(Map<?,?> map,
Class<T> beanClass,
boolean isIgnoreError)
Deprecated.
|
static Object |
setFieldValue(Object bean,
String fieldNameOrIndex,
Object value)
设置字段值,通过反射设置字段值,并不调用setXXX方法
对象同样支持Map类型,fieldNameOrIndex即为key,支持: Map List Bean |
static void |
setProperty(Object bean,
String expression,
Object value)
解析Bean中的属性值
|
static <T> T |
toBean(Class<T> beanClass,
ValueProvider<String> valueProvider,
CopyOptions copyOptions)
ServletRequest 参数转Bean
|
static <T> T |
toBean(Object source,
Class<T> clazz)
对象或Map转Bean
|
static <T> T |
toBean(Object source,
Class<T> clazz,
CopyOptions options)
对象或Map转Bean
|
static <T> T |
toBean(Object source,
Supplier<T> targetSupplier,
CopyOptions options)
对象或Map转Bean
|
static <T> T |
toBeanIgnoreCase(Object source,
Class<T> clazz,
boolean ignoreError)
对象或Map转Bean,忽略字段转换时发生的异常
|
static <T> T |
toBeanIgnoreError(Object source,
Class<T> clazz)
对象或Map转Bean,忽略字段转换时发生的异常
|
static <T> T |
trimStrFields(T bean,
String... ignoreFields)
把Bean里面的String属性做trim操作。
|
public static boolean isReadableBean(Class<?> clazz)
1、是否存在只有无参数的getXXX方法或者isXXX方法
2、是否存在public类型的字段
clazz - 待测试类hasGetter(Class),
hasPublicField(Class)public static boolean isBean(Class<?> clazz)
1、是否存在只有一个参数的setXXX方法
2、是否存在public类型的字段
clazz - 待测试类hasSetter(Class),
hasPublicField(Class)public static boolean hasSetter(Class<?> clazz)
clazz - 待测试类public static boolean hasGetter(Class<?> clazz)
clazz - 待测试类public static boolean hasPublicField(Class<?> clazz)
clazz - 待测试类public static DynaBean createDynaBean(Object bean)
bean - 普通Bean或MapDynaBeanpublic static PropertyEditor findEditor(Class<?> type)
PropertyEditortype - 需要转换的目标类型PropertyEditorpublic static BeanDesc getBeanDesc(Class<?> clazz)
BeanDesc Bean描述信息clazz - Bean类BeanDescpublic static void descForEach(Class<?> clazz, Consumer<? super PropDesc> action)
clazz - Bean类action - 每个元素的处理类public static PropertyDescriptor[] getPropertyDescriptors(Class<?> clazz) throws BeanException
clazz - Bean类BeanException - 获取属性异常public static Map<String,PropertyDescriptor> getPropertyDescriptorMap(Class<?> clazz, boolean ignoreCase) throws BeanException
BeanInfoCache中clazz - Bean类ignoreCase - 是否忽略大小写BeanException - 获取属性异常public static PropertyDescriptor getPropertyDescriptor(Class<?> clazz, String fieldName) throws BeanException
clazz - Bean类fieldName - 字段名BeanException - 获取属性异常public static PropertyDescriptor getPropertyDescriptor(Class<?> clazz, String fieldName, boolean ignoreCase) throws BeanException
clazz - Bean类fieldName - 字段名ignoreCase - 是否忽略大小写BeanException - 获取属性异常public static Object getFieldValue(Object bean, String fieldNameOrIndex)
bean - Bean对象fieldNameOrIndex - 字段名或序号,序号支持负数public static Object setFieldValue(Object bean, String fieldNameOrIndex, Object value)
bean - BeanfieldNameOrIndex - 字段名或序号,序号支持负数value - 值public static <T> T getProperty(Object bean, String expression)
T - 属性值类型bean - Bean对象,支持Map、List、Collection、Arrayexpression - 表达式,例如:person.friend[5].namenull或者express为空,返回nullBeanPath.get(Object)public static void setProperty(Object bean, String expression, Object value)
bean - Bean对象,支持Map、List、Collection、Arrayexpression - 表达式,例如:person.friend[5].namevalue - 属性值BeanPath.get(Object)@Deprecated public static <T> T mapToBean(Map<?,?> map, Class<T> beanClass, boolean isIgnoreError)
toBean(Object, Class) 或 toBeanIgnoreError(Object, Class)T - Bean类型map - MapbeanClass - Bean ClassisIgnoreError - 是否忽略注入错误@Deprecated public static <T> T mapToBeanIgnoreCase(Map<?,?> map, Class<T> beanClass, boolean isIgnoreError)
toBeanIgnoreCase(Object, Class, boolean)T - Bean类型map - MapbeanClass - Bean ClassisIgnoreError - 是否忽略注入错误@Deprecated public static <T> T mapToBean(Map<?,?> map, Class<T> beanClass, CopyOptions copyOptions)
toBean(Object, Class, CopyOptions)T - Bean类型map - MapbeanClass - Bean ClasscopyOptions - 转Bean选项@Deprecated public static <T> T mapToBean(Map<?,?> map, Class<T> beanClass, boolean isToCamelCase, CopyOptions copyOptions)
toBean(Object, Class, CopyOptions)T - Bean类型map - MapbeanClass - Bean ClassisToCamelCase - 是否将Map中的下划线风格key转换为驼峰风格copyOptions - 转Bean选项public static <T> T fillBeanWithMap(Map<?,?> map, T bean, boolean isIgnoreError)
T - Bean类型map - Mapbean - BeanisIgnoreError - 是否忽略注入错误@Deprecated public static <T> T fillBeanWithMap(Map<?,?> map, T bean, boolean isToCamelCase, boolean isIgnoreError)
fillBeanWithMap(Map, Object, boolean)T - Bean类型map - Mapbean - BeanisToCamelCase - 是否将下划线模式转换为驼峰模式isIgnoreError - 是否忽略注入错误public static <T> T fillBeanWithMapIgnoreCase(Map<?,?> map, T bean, boolean isIgnoreError)
T - Bean类型map - Mapbean - BeanisIgnoreError - 是否忽略注入错误public static <T> T fillBeanWithMap(Map<?,?> map, T bean, CopyOptions copyOptions)
T - Bean类型map - Mapbean - BeancopyOptions - 属性复制选项 CopyOptions@Deprecated public static <T> T fillBeanWithMap(Map<?,?> map, T bean, boolean isToCamelCase, CopyOptions copyOptions)
fillBeanWithMap(Map, Object, CopyOptions)T - Bean类型map - Mapbean - BeanisToCamelCase - 是否将Map中的下划线风格key转换为驼峰风格copyOptions - 属性复制选项 CopyOptionspublic static <T> T toBean(Object source, Class<T> clazz)
T - 转换的Bean类型source - Bean对象或Mapclazz - 目标的Bean类型public static <T> T toBeanIgnoreError(Object source, Class<T> clazz)
T - 转换的Bean类型source - Bean对象或Mapclazz - 目标的Bean类型public static <T> T toBeanIgnoreCase(Object source, Class<T> clazz, boolean ignoreError)
T - 转换的Bean类型source - Bean对象或Mapclazz - 目标的Bean类型ignoreError - 是否忽略注入错误public static <T> T toBean(Object source, Class<T> clazz, CopyOptions options)
T - 转换的Bean类型source - Bean对象或Mapclazz - 目标的Bean类型options - 属性拷贝选项public static <T> T toBean(Object source, Supplier<T> targetSupplier, CopyOptions options)
T - 转换的Bean类型source - Bean对象或MaptargetSupplier - 目标的Bean创建器options - 属性拷贝选项public static <T> T toBean(Class<T> beanClass, ValueProvider<String> valueProvider, CopyOptions copyOptions)
T - Bean类型beanClass - Bean ClassvalueProvider - 值提供者copyOptions - 拷贝选项,见 CopyOptionspublic static <T> T fillBean(T bean,
ValueProvider<String> valueProvider,
CopyOptions copyOptions)
T - Bean类型bean - BeanvalueProvider - 值提供者copyOptions - 拷贝选项,见 CopyOptionspublic static Map<String,Object> beanToMap(Object bean, String... properties)
null的值的。bean - beanproperties - 需要拷贝的属性值,null或空表示拷贝所有值public static Map<String,Object> beanToMap(Object bean, boolean isToUnderlineCase, boolean ignoreNullValue)
bean - bean对象isToUnderlineCase - 是否转换为下划线模式ignoreNullValue - 是否忽略值为空的字段public static Map<String,Object> beanToMap(Object bean, Map<String,Object> targetMap, boolean isToUnderlineCase, boolean ignoreNullValue)
bean - bean对象targetMap - 目标的MapisToUnderlineCase - 是否转换为下划线模式ignoreNullValue - 是否忽略值为空的字段public static Map<String,Object> beanToMap(Object bean, Map<String,Object> targetMap, boolean ignoreNullValue, Editor<String> keyEditor)
Editor 可以自定义字段值,如果这个Editor返回null则忽略这个字段,以便实现:
1. 字段筛选,可以去除不需要的字段 2. 字段变换,例如实现驼峰转下划线 3. 自定义字段前缀或后缀等等
bean - bean对象targetMap - 目标的MapignoreNullValue - 是否忽略值为空的字段keyEditor - 属性字段(Map的key)编辑器,用于筛选、编辑key,如果这个Editor返回null则忽略这个字段public static Map<String,Object> beanToMap(Object bean, Map<String,Object> targetMap, CopyOptions copyOptions)
CopyOptions 完成抓换选项,以便实现:
1. 字段筛选,可以去除不需要的字段 2. 字段变换,例如实现驼峰转下划线 3. 自定义字段前缀或后缀等等 4. 字段值处理 ...
bean - bean对象targetMap - 目标的MapcopyOptions - 拷贝选项public static <T> T copyProperties(Object source, Class<T> tClass, String... ignoreProperties)
T - 对象类型source - 源Bean对象tClass - 目标ClassignoreProperties - 不拷贝的的属性列表public static void copyProperties(Object source, Object target, String... ignoreProperties)
source - 源Bean对象target - 目标Bean对象ignoreProperties - 不拷贝的的属性列表public static void copyProperties(Object source, Object target, boolean ignoreCase)
source - 源Bean对象target - 目标Bean对象ignoreCase - 是否忽略大小写public static void copyProperties(Object source, Object target, CopyOptions copyOptions)
source - 源Bean对象target - 目标Bean对象copyOptions - 拷贝选项,见 CopyOptionspublic static <T> List<T> copyToList(Collection<?> collection, Class<T> targetType, CopyOptions copyOptions)
List中。T - Bean类型collection - 原Bean集合targetType - 目标Bean类型copyOptions - 拷贝选项public static <T> List<T> copyToList(Collection<?> collection, Class<T> targetType)
List中。T - Bean类型collection - 原Bean集合targetType - 目标Bean类型public static boolean isMatchName(Object bean, String beanClassName, boolean isSimple)
true,则只匹配类名而忽略包名,例如:cn.hutool.TestEntity只匹配TestEntityfalse,则匹配包括包名的全类名,例如:cn.hutool.TestEntity匹配cn.hutool.TestEntitybean - BeanbeanClassName - Bean的类名isSimple - 是否只匹配类名而忽略包名,true表示忽略包名public static <T> T edit(T bean,
Editor<Field> editor)
T - 被编辑的Bean类型bean - beaneditor - 编辑器函数public static <T> T trimStrFields(T bean,
String... ignoreFields)
通常bean直接用来绑定页面的input,用户的输入可能首尾存在空格,通常保存数据库前需要把首尾空格去掉
T - Bean类型bean - Bean对象ignoreFields - 不需要trim的Field名称列表(不区分大小写)public static boolean isNotEmpty(Object bean, String... ignoreFieldNames)
null或者含有非null属性的对象bean - Bean对象ignoreFieldNames - 忽略检查的字段名true - 非空 / false - 空public static boolean isEmpty(Object bean, String... ignoreFieldNames)
null或者所有属性都为nullbean - Bean对象ignoreFieldNames - 忽略检查的字段名true - 空 / false - 非空public static boolean hasNullField(Object bean, String... ignoreFieldNames)
null的属性null也返回truebean - Bean对象ignoreFieldNames - 忽略检查的字段名null的属性,true - 包含 / false - 不包含public static String getFieldName(String getterOrSetterName)
IllegalArgumentExceptiongetterOrSetterName - Getter或Setter方法名IllegalArgumentException - 非Getter或Setter方法Copyright © 2025. All rights reserved.