我有这个代码:
Element excludeFilterElementMerged = excludeFilter.elements.get(0);
for (model.rest.filter.Segment.Element elementExcl : excludeFilter.elements) {
filterPosition++;
excludeFilterElementMerged.isIncluded = "false";
if (filterPosition % 10 == 0 || filterPosition == excludeFilter.elements.size()){
elements.add(excludeFilterElementMerged);
excludeFilterElementMerged = elementExcl;
}
excludeFilterElementMerged.filter.criteria.addAll(elementExcl.filter.criteria);
excludeFilterElementMerged.filter.statement += " OR "+elementExcl.filter.statement;
}
将 excludeFilterElementMerged
添加到列表后,我想为其提供新属性,而不影响列表中的对象。我想,我可以通过为其分配一个新对象来解决这个问题:excludeFilterElementMerged = elementExcl;
。
解决这个问题的正确方法是什么?
我应该将对象的克隆
添加到List
吗?或者我应该创建一个 Element
类型的新对象,将 excludeFilterElementMerged
放入其中,然后将其保存到 List
中?
最佳答案
excludeFilterElementMerged = elementExcl
绝对不是正确的方法,因为这不会复制对象,它只是创建对其的新引用。
没有简单/简单的方法可以在 Java 中复制对象。您必须实现 clone()
( which is not recommended ) 或更好,有一个复制构造函数,例如公共(public)元素(最终元素 anotherElement)
。
关于java - 将对象的副本添加到 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33896368/