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或MapDynaBean
public static PropertyEditor findEditor(Class<?> type)
PropertyEditor
type
- 需要转换的目标类型PropertyEditor
public static BeanDesc getBeanDesc(Class<?> clazz)
BeanDesc
Bean描述信息clazz
- Bean类BeanDesc
public 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为空,返回null
BeanPath.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
- Map
beanClass
- 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
- Map
beanClass
- 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
- Map
beanClass
- 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
- 属性复制选项 CopyOptions
public 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
- 拷贝选项,见 CopyOptions
public static <T> T fillBean(T bean, ValueProvider<String> valueProvider, CopyOptions copyOptions)
T
- Bean类型bean
- BeanvalueProvider
- 值提供者copyOptions
- 拷贝选项,见 CopyOptions
public 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
- 拷贝选项,见 CopyOptions
public 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
或者所有属性都为null
bean
- 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)
IllegalArgumentException
getterOrSetterName
- Getter或Setter方法名IllegalArgumentException
- 非Getter或Setter方法Copyright © 2024. All rights reserved.