diff --git a/CHANGELOG.md b/CHANGELOG.md index 699eef30f..234751750 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,11 +3,12 @@ ------------------------------------------------------------------------------------------------------------- -# 5.6.4 (2021-04-14) +# 5.6.4 (2021-04-18) ### 新特性 * 【core 】 DatePattern补充DateTimeFormatter(pr#308@Gitee) * 【core 】 DateUtil.compare增加支持给定格式比较(pr#310@Gitee) +* 【core 】 BeanUtil增加edit方法(issue#I3J6BG@Gitee) ### Bug修复 * 【db 】 修复SQL分页时未使用别名导致的错误,同时count时取消order by子句(issue#I3IJ8X@Gitee) diff --git a/hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java b/hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java index d60927168..181423485 100644 --- a/hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java @@ -729,6 +729,31 @@ public class BeanUtil { return ClassUtil.getClassName(bean, isSimple).equals(isSimple ? StrUtil.upperFirst(beanClassName) : beanClassName); } + /** + * 编辑Bean的字段,static字段不会处理
+ * 例如需要对指定的字段做判空操作、null转""操作等等。 + * + * @param bean bean + * @param editor 编辑器函数 + * @param 被编辑的Bean类型 + * @return bean + * @since 5.6.4 + */ + public static T edit(T bean, Editor editor){ + if (bean == null) { + return null; + } + + final Field[] fields = ReflectUtil.getFields(bean.getClass()); + for (Field field : fields) { + if (ModifierUtil.isStatic(field)) { + continue; + } + editor.edit(field); + } + return bean; + } + /** * 把Bean里面的String属性做trim操作。此方法直接对传入的Bean做修改。 *

@@ -740,18 +765,10 @@ public class BeanUtil { * @return 处理后的Bean对象 */ public static T trimStrFields(T bean, String... ignoreFields) { - if (bean == null) { - return null; - } - - final Field[] fields = ReflectUtil.getFields(bean.getClass()); - for (Field field : fields) { - if (ModifierUtil.isStatic(field)) { - continue; - } + return edit(bean, (field)->{ if (ignoreFields != null && ArrayUtil.containsIgnoreCase(ignoreFields, field.getName())) { // 不处理忽略的Fields - continue; + return field; } if (String.class.equals(field.getType())) { // 只有String的Field才处理 @@ -764,9 +781,8 @@ public class BeanUtil { } } } - } - - return bean; + return field; + }); } /** diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/Editor.java b/hutool-core/src/main/java/cn/hutool/core/lang/Editor.java index f30c76863..591a87340 100644 --- a/hutool-core/src/main/java/cn/hutool/core/lang/Editor.java +++ b/hutool-core/src/main/java/cn/hutool/core/lang/Editor.java @@ -3,12 +3,12 @@ package cn.hutool.core.lang; /** * 编辑器接口,常用于对于集合中的元素做统一编辑
* 此编辑器两个作用: - * + * *

- * 1、如果返回值为null,表示此值被抛弃 
+ * 1、如果返回值为{@code null},表示此值被抛弃
  * 2、对对象做修改
  * 
- * + * * @param 被编辑对象类型 * @author Looly */ @@ -16,9 +16,9 @@ package cn.hutool.core.lang; public interface Editor { /** * 修改过滤后的结果 - * + * * @param t 被过滤的对象 - * @return 修改后的对象,如果被过滤返回null + * @return 修改后的对象,如果被过滤返回{@code null} */ T edit(T t); }