将对象的副本添加到ArrayList

时间:2015-11-24 14:35:19

标签: java arraylist

我有这段代码:

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

1 个答案:

答案 0 :(得分:3)

excludeFilterElementMerged = elementExcl绝对不是正确的方法,因为它不会复制对象,只会创建一个新的引用。

在Java中复制对象没有简单/简单的方法。您必须实施clone()which is not recommended)或更好,具有复制构造函数,例如public Element(final Element anotherElement)