From c3b576f698774d09bf43d5b6f0e7adb94ab540be Mon Sep 17 00:00:00 2001 From: Looly Date: Fri, 30 Aug 2024 15:11:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DTree.cloneTree=E7=9A=84Parent?= =?UTF-8?q?=E8=8A=82=E7=82=B9=E5=BC=95=E7=94=A8=E9=94=99=E8=AF=AF=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + .../src/main/java/cn/hutool/core/lang/tree/Tree.java | 9 ++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7397e3183..4d571f437 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ * 【crypto 】 修复ZipUtil压缩成流的方法检查文件时报错问题(issue#3697@Github) * 【core 】 修复CopyOptions.setFieldValueEditor后生成null值setIgnoreNullValue无效问题(issue#3702@Github) * 【json 】 修复JSONConfig.setDateFormat设置后setWriteLongAsString失效问题(issue#IALQ0N@Gitee) +* 【core 】 修复Tree.cloneTree的Parent节点引用错误问题(issue#IANJTC@Gitee) ------------------------------------------------------------------------------------------------------------- # 5.8.31(2024-08-12) diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/tree/Tree.java b/hutool-core/src/main/java/cn/hutool/core/lang/tree/Tree.java index 34775f92d..00410a64d 100755 --- a/hutool-core/src/main/java/cn/hutool/core/lang/tree/Tree.java +++ b/hutool-core/src/main/java/cn/hutool/core/lang/tree/Tree.java @@ -315,22 +315,25 @@ public class Tree extends LinkedHashMap implements Node { */ public Tree cloneTree() { final Tree result = ObjectUtil.clone(this); - result.setChildren(cloneChildren()); + result.setChildren(cloneChildren(result)); return result; } /** * 递归复制子节点 * + * @param parent 新的父节点 * @return 新的子节点列表 */ - private List> cloneChildren() { + private List> cloneChildren(final Tree parent) { final List> children = getChildren(); if (null == children) { return null; } final List> newChildren = new ArrayList<>(children.size()); - children.forEach((t) -> newChildren.add(t.cloneTree())); + children.forEach((t) -> { + newChildren.add(t.cloneTree().setParent(parent)); + }); return newChildren; }