gpt4 book ai didi

java - 从 ArrayList 项创建新对象

转载 作者:行者123 更新时间:2023-12-02 01:42:15 25 4
gpt4 key购买 nike

我需要从 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com