我已将一个对象复制到另一个对象中。
BeanUtils.CopyProperties(Src,Dest);
From : package org.springframework.beans;
现在,在逻辑上,在迭代器的帮助下,我修改了Dest对象中的列表。
我希望src对象保持原样。
但我看到了一种奇怪的行为。我的Src也被修改了。
原因是什么?
示例: src和Dest有列表:芒果,苹果
在它的帮助下,我把芒果从舞会上移走了。
后来我看到了
Src拥有苹果
最棒的苹果
这是因为浅薄的复制吗?
发布于 2017-06-18 06:04:27
您不想复制List
字段,而是在新复制的对象中复制它。
BeanUtils.copyProperties(Object source, Object target)
在其javadoc中没有明确显示,但它从一个对象到另一个对象做了一个浅拷贝。
这意味着在target
对象中,List
字段将引用source
对象中相同的对象。
因此,从一个或另一个对象修改List
字段将反映在另一个对象中。
要创建一个新列表,您应该创建一个包含源List
中的实际元素的新列表实例,并将其分配给目标对象中的List
字段。
例如:
MyObject source = ...;
MyObject target = ...;
BeanUtils.copyProperties(source, target);
...
List<String> newList = new ArrayList<>(source.getList());
target.setList(newList);
https://stackoverflow.com/questions/44611934
复制相似问题