diff --git a/hutool-extra/src/main/java/cn/hutool/extra/cglib/BeanCopierCache.java b/hutool-extra/src/main/java/cn/hutool/extra/cglib/BeanCopierCache.java index 2573bd7d4..91928c548 100644 --- a/hutool-extra/src/main/java/cn/hutool/extra/cglib/BeanCopierCache.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/cglib/BeanCopierCache.java @@ -27,10 +27,9 @@ public enum BeanCopierCache { * @param targetClass 目标Bean的类 * @param converter 转换器 * @return Map中对应的BeanCopier - * @since 5.4.1 */ public BeanCopier get(Class srcClass, Class targetClass, Converter converter) { - String key = genKey(srcClass, targetClass, converter); + final String key = genKey(srcClass, targetClass, converter); return cache.get(key, () -> BeanCopier.create(srcClass, targetClass, converter != null)); } @@ -41,11 +40,12 @@ public enum BeanCopierCache { * @param targetClass 目标Bean的类 * @param converter 转换器 * @return 属性名和Map映射的key - * @since 5.4.1 */ private String genKey(Class srcClass, Class targetClass, Converter converter) { - - return converter == null ? StrUtil.format("{}#{}", srcClass.getName(), targetClass.getName()) - : StrUtil.format("{}#{}#{}", srcClass.getName(), targetClass.getName(), converter.getClass().getName()); + String key = StrUtil.format("{}#{}", srcClass.getName(), targetClass.getName()); + if(null != converter){ + key += "#" + converter.getClass().getName(); + } + return key; } } diff --git a/hutool-extra/src/main/java/cn/hutool/extra/cglib/CglibUtil.java b/hutool-extra/src/main/java/cn/hutool/extra/cglib/CglibUtil.java index d4f8a637e..086aa2516 100644 --- a/hutool-extra/src/main/java/cn/hutool/extra/cglib/CglibUtil.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/cglib/CglibUtil.java @@ -6,6 +6,7 @@ import net.sf.cglib.beans.BeanCopier; import net.sf.cglib.beans.BeanMap; import net.sf.cglib.core.Converter; +import java.util.Collection; import java.util.List; import java.util.function.BiConsumer; import java.util.function.Supplier; @@ -27,7 +28,6 @@ public class CglibUtil { * @param source 源bean对象 * @param targetClass 目标bean类,自动实例化此对象 * @return 目标对象 - * @since 5.4.1 */ public static T copy(Object source, Class targetClass) { return copy(source, targetClass, null); @@ -42,7 +42,6 @@ public class CglibUtil { * @param targetClass 目标bean类,自动实例化此对象 * @param converter 转换器,无需可传{@code null} * @return 目标对象 - * @since 5.4.1 */ public static T copy(Object source, Class targetClass, Converter converter) { final T target = ReflectUtil.newInstanceIfPossible(targetClass); @@ -55,7 +54,6 @@ public class CglibUtil { * * @param source 源bean对象 * @param target 目标bean对象 - * @since 5.4.1 */ public static void copy(Object source, Object target) { copy(source, target, null); @@ -82,14 +80,13 @@ public class CglibUtil { /** * 拷贝List Bean对象属性 * - * @param source 源bean对象list - * @param target 目标bean对象 * @param 源bean类型 * @param 目标bean类型 + * @param source 源bean对象list + * @param target 目标bean对象 * @return 目标bean对象list - * @since 5.4.1 */ - public static List copyList(List source, Supplier target) { + public static List copyList(Collection source, Supplier target) { return copyList(source, target, null, null); } @@ -104,7 +101,7 @@ public class CglibUtil { * @return 目标bean对象list * @since 5.4.1 */ - public static List copyList(List source, Supplier target, Converter converter) { + public static List copyList(Collection source, Supplier target, Converter converter) { return copyList(source, target, converter, null); } @@ -119,7 +116,7 @@ public class CglibUtil { * @return 目标bean对象list * @since 5.4.1 */ - public static List copyList(List source, Supplier target, BiConsumer callback) { + public static List copyList(Collection source, Supplier target, BiConsumer callback) { return copyList(source, target, null, callback); } @@ -133,9 +130,8 @@ public class CglibUtil { * @param 源bean类型 * @param 目标bean类型 * @return 目标bean对象list - * @since 5.4.1 */ - public static List copyList(List source, Supplier target, Converter converter, BiConsumer callback) { + public static List copyList(Collection source, Supplier target, Converter converter, BiConsumer callback) { return source.stream().map(s -> { T t = target.get(); copy(source, t, converter);