我有这段代码:
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;
。
解决这个问题的正确方法是什么?
我应该将clone
对象添加到List
吗?或者我应该创建一个Element
类型的新对象,将excludeFilterElementMerged
放入其中,然后将其保存到List
?
答案 0 :(得分:3)
excludeFilterElementMerged = elementExcl
绝对不是正确的方法,因为它不会复制对象,只会创建一个新的引用。
在Java中复制对象没有简单/简单的方法。您必须实施clone()
(which is not recommended)或更好,具有复制构造函数,例如public Element(final Element anotherElement)
。