首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >修改BeanUtils.CopyProperties的目标对象时对源进行修改

修改BeanUtils.CopyProperties的目标对象时对源进行修改
EN

Stack Overflow用户
提问于 2017-06-18 05:12:51
回答 1查看 1K关注 0票数 1

我已将一个对象复制到另一个对象中。

代码语言:javascript
运行
复制
BeanUtils.CopyProperties(Src,Dest);

From : package org.springframework.beans;

现在,在逻辑上,在迭代器的帮助下,我修改了Dest对象中的列表。

我希望src对象保持原样。

但我看到了一种奇怪的行为。我的Src也被修改了。

原因是什么?

示例: src和Dest有列表:芒果,苹果

在它的帮助下,我把芒果从舞会上移走了。

后来我看到了

Src拥有苹果

最棒的苹果

这是因为浅薄的复制吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-18 06:04:27

您不想复制List字段,而是在新复制的对象中复制它。

BeanUtils.copyProperties(Object source, Object target)在其javadoc中没有明确显示,但它从一个对象到另一个对象做了一个浅拷贝。

这意味着在target对象中,List字段将引用source对象中相同的对象。

因此,从一个或另一个对象修改List字段将反映在另一个对象中。

要创建一个新列表,您应该创建一个包含源List中的实际元素的新列表实例,并将其分配给目标对象中的List字段。

例如:

代码语言:javascript
运行
复制
MyObject source = ...;
MyObject target = ...;

BeanUtils.copyProperties(source, target);
...
List<String> newList = new ArrayList<>(source.getList());
target.setList(newList);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44611934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档