java - 将对象的副本添加到 ArrayList

标签 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;

解决这个问题的正确方法是什么?

我应该将对象的克隆添加到List吗?或者我应该创建一个 Element 类型的新对象,将 excludeFilterElementMerged 放入其中,然后将其保存到 List 中?

最佳答案

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

没有简单/简单的方法可以在 Java 中复制对象。您必须实现 clone() ( which is not recommended ) 或更好,有一个复制构造函数,例如公共(public)元素(最终元素 anotherElement)

关于java - 将对象的副本添加到 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33896368/

相关文章:

java - 静态数组列表会丢失其中包含的内容吗?

Vb.NET String.Format 与 ArrayList

java - 如何使用JAVA Apache POI为powerpoint的每张幻灯片的背景设置不同的图像?

java - 如何使用异常?

java - 如何在 Observable RxJava 中处理处置

java - 如何为现有 key 添加值

java - 计算文档中字符串的唯一出现次数

java - 如何从 LinkedList pp = new LinkedList(); 中删除整数?

groovy - 使用元类重写 Groovy 中 ArrayList 的方法

java - 即使索引在范围内,从 ArrayList 检索第 N 个项目也会给出 IndexOutOfBoundsException?