diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d9fbcd4e..f43d8f9fd 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ * 【core 】 修复ZipReader.get调用reset异常问题(issue#3099@Github) * 【core 】 修复FileUtil.createTempFile可能导致的漏洞(issue#3103@Github) * 【cron 】 修复SystemTimer无法结束进程问题(issue#3090@Github) +* 【core 】 修复BeanUtil.copyToList复制Long等类型错误问题(issue#3091@Github) ------------------------------------------------------------------------------------------------------------- # 5.8.18 (2023-04-27) 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 376cb0aa4..142ec7ec7 100755 --- a/hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java @@ -789,6 +789,12 @@ public class BeanUtil { if (collection.isEmpty()) { return new ArrayList<>(0); } + + // issue#3091 + if(ClassUtil.isBasicType(targetType) || String.class == targetType){ + return Convert.toList(targetType, collection); + } + return collection.stream().map((source) -> { final T target = ReflectUtil.newInstanceIfPossible(targetType); copyProperties(source, target, copyOptions); diff --git a/hutool-core/src/test/java/cn/hutool/core/bean/Issue3091Test.java b/hutool-core/src/test/java/cn/hutool/core/bean/Issue3091Test.java new file mode 100644 index 000000000..d09db88d7 --- /dev/null +++ b/hutool-core/src/test/java/cn/hutool/core/bean/Issue3091Test.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2023 looly(loolly@aliyun.com) + * Hutool is licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + */ + +package cn.hutool.core.bean; + +import org.junit.Assert; +import org.junit.Test; + +import java.util.Arrays; +import java.util.List; + +public class Issue3091Test { + + @Test + public void copyToListTest() { + final List list = Arrays.asList(1L,2L); + final List result = BeanUtil.copyToList(list, Integer.class); + Assert.assertEquals("[1, 2]", result.toString()); + } +}