【发布时间】:2013-05-09 21:31:41
【问题描述】:
我一直在我的一个项目中使用 ArrayLists,我需要创建一个默认的 ArrayList,以便我可以随时重置原始的。所以,我复制了原始的 ArrayList 来创建默认的。但是,每当我修改原始文件时,它也会更改默认值。如何使副本“静态”且不可更改?
这是我的代码:(它是葡萄牙语)
private ArrayList<Compartimento> listaCompartimentos;
private ArrayList<Compartimento> listaCompartimentosDEFAULT;
public Simulador() {
this.listaCompartimentos = new ArrayList<>();
this.listaCompartimentosDEFAULT=new ArrayList<>();
}
//Copy of the array
public void gravarListaDefault(){
this.listaCompartimentosDEFAULT=(ArrayList<Compartimento>)listaCompartimentos.clone();
}
注意:我不知道这是否是它背后的原因,但 ArrayList listaCompartimentos 有一个 listaEquipamentos。对于每个“Compartimento”,都有一个 ArrayList“listaEquipamentos”。
【问题讨论】:
-
我认为你不应该在那里使用克隆。不是 Java 专家,但我认为一个简单的任务就可以了。
-
@Gjordis 你是对的; )(关于克隆)
-
@Gjordis 简单赋值在 Java 中不起作用。
-
然后由构造函数赋值。