修复Tree.cloneTree的Parent节点引用错误问题

This commit is contained in:
Looly 2024-08-30 15:11:43 +08:00
parent baac5d05d4
commit c3b576f698
2 changed files with 7 additions and 3 deletions

View File

@ -14,6 +14,7 @@
* 【crypto 】 修复ZipUtil压缩成流的方法检查文件时报错问题issue#3697@Github * 【crypto 】 修复ZipUtil压缩成流的方法检查文件时报错问题issue#3697@Github
* 【core 】 修复CopyOptions.setFieldValueEditor后生成null值setIgnoreNullValue无效问题issue#3702@Github * 【core 】 修复CopyOptions.setFieldValueEditor后生成null值setIgnoreNullValue无效问题issue#3702@Github
* 【json 】 修复JSONConfig.setDateFormat设置后setWriteLongAsString失效问题issue#IALQ0N@Gitee * 【json 】 修复JSONConfig.setDateFormat设置后setWriteLongAsString失效问题issue#IALQ0N@Gitee
* 【core 】 修复Tree.cloneTree的Parent节点引用错误问题issue#IANJTC@Gitee
------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------
# 5.8.31(2024-08-12) # 5.8.31(2024-08-12)

View File

@ -315,22 +315,25 @@ public class Tree<T> extends LinkedHashMap<String, Object> implements Node<T> {
*/ */
public Tree<T> cloneTree() { public Tree<T> cloneTree() {
final Tree<T> result = ObjectUtil.clone(this); final Tree<T> result = ObjectUtil.clone(this);
result.setChildren(cloneChildren()); result.setChildren(cloneChildren(result));
return result; return result;
} }
/** /**
* 递归复制子节点 * 递归复制子节点
* *
* @param parent 新的父节点
* @return 新的子节点列表 * @return 新的子节点列表
*/ */
private List<Tree<T>> cloneChildren() { private List<Tree<T>> cloneChildren(final Tree<T> parent) {
final List<Tree<T>> children = getChildren(); final List<Tree<T>> children = getChildren();
if (null == children) { if (null == children) {
return null; return null;
} }
final List<Tree<T>> newChildren = new ArrayList<>(children.size()); final List<Tree<T>> newChildren = new ArrayList<>(children.size());
children.forEach((t) -> newChildren.add(t.cloneTree())); children.forEach((t) -> {
newChildren.add(t.cloneTree().setParent(parent));
});
return newChildren; return newChildren;
} }