java - 从 ArrayList<E> 项创建新对象

标签 java arraylist

我需要从 ArrayList 创建几个新对象。假设我的列表是:

ArrayList<InvVoucher> list = .....;
int index = 0;
InvVoucher vch1 = list.get(index);
InvVoucher vch2 = list.get(index);
InvVoucher vch3 = list.get(index);

这里vch1 , vch2vch3持有相同的对象引用。我怎样才能让他们全部独立?我如何获得 InvVoucher 的三个不同副本?

最佳答案

一种方法是按照评论中的建议在 IntVoucher 中实现复制构造函数。

public class IntVoucher {
    public IntVoucher(IntVoucher original) {
        this.field1 = new Field1(original.field1);
        ...
    }
    private Field1 field1;
    ...
}

这样就可以了

IntVoucher vch1 = new IntVoucher(list.get(index));

另一种可能性是重写 IntVoucher 中的 clone 方法并让它实现 java.lang.Cloneable 接口(interface)。

public class IntVoucher implements Cloneable {
    // note: change from protected to public if needed
    protected IntVoucher clone() {
       IntVoucher clone = new IntVoucher();
       clone.field1 = new Field1(this.field1);
       ...
       return clone;
    }
    private Field1 field1;
    ...
}

阅读有关 Java 中浅/深复制的更多信息。如果这还不够,还有很多完整的示例。

关于java - 从 ArrayList<E> 项创建新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57482014/

相关文章:

java - 如何使用 Java 代码将文档添加到 Alfresco Repository?

java - Spark 提交到 Amazon EMR 时如何指定自定义 log4j.configuration 的位置?

java - 将数据存储到数组列表中,然后存储到二叉搜索树中

Java 数组列表导航

java - 如果给定索引处存在ArrayList替换元素?

java - 将 .add 用于 arraylist 似乎不起作用,我做错了什么?

java - 数组、整数和数组的和

java - 温度计类逻辑错误

java - 如何在基本适配器中按下按钮时添加新项目

java - 更新非 JSF 表单