From d8b9b5cad109d2749fb38bc0bbc97f8df548b8af Mon Sep 17 00:00:00 2001 From: Looly Date: Sat, 20 May 2023 02:30:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DBeanUtil.copyToList=E5=A4=8D?= =?UTF-8?q?=E5=88=B6Long=E7=AD=89=E7=B1=BB=E5=9E=8B=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + .../java/cn/hutool/core/bean/BeanUtil.java | 6 ++++ .../cn/hutool/core/bean/Issue3091Test.java | 29 +++++++++++++++++++ 3 files changed, 36 insertions(+) create mode 100644 hutool-core/src/test/java/cn/hutool/core/bean/Issue3091Test.java 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()); + } +}