From 50abb8f6a6a23c418ddace8b850e809f2191a94b Mon Sep 17 00:00:00 2001 From: Looly Date: Fri, 15 Apr 2022 06:20:47 +0800 Subject: [PATCH] add method --- CHANGELOG.md | 3 ++- .../java/cn/hutool/core/bean/BeanUtil.java | 19 +++++++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4484899fd..04520ca7d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,11 +3,12 @@ ------------------------------------------------------------------------------------------------------------- -# 5.8.0.M4 (2022-04-14) +# 5.8.0.M4 (2022-04-15) ### ❌不兼容特性 ### 🐣新特性 +* 【core 】 BeanUtil增加toBean重载(pr#598@Gitee) ### 🐞Bug修复 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 3f0428f84..eabce8de0 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 @@ -30,6 +30,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.function.Consumer; +import java.util.function.Supplier; import java.util.stream.Collectors; /** @@ -548,10 +549,24 @@ public class BeanUtil { * @since 5.2.4 */ public static T toBean(Object source, Class clazz, CopyOptions options) { - if (null == source) { + return toBean(source, () -> ReflectUtil.newInstanceIfPossible(clazz), options); + } + + /** + * 对象或Map转Bean + * + * @param 转换的Bean类型 + * @param source Bean对象或Map + * @param targetSupplier 目标的Bean创建器 + * @param options 属性拷贝选项 + * @return Bean对象 + * @since 5.8.0 + */ + public static T toBean(Object source, Supplier targetSupplier, CopyOptions options) { + if (null == source || null == targetSupplier) { return null; } - final T target = ReflectUtil.newInstanceIfPossible(clazz); + final T target = targetSupplier.get(); copyProperties(source, target, options); return target; }