我有這樣的:複製整個對象在內存
import java.util.ArrayList;
public class MyClass {
ArrayList list = new ArrayList();
public MyClass(){
}
public MyClass(MyClass aClass){
this.list = aClass.getList();
}
public void add(int number){
list.add(number);
}
public void set(int number){
list.set(0, number);
}
public int get(){
return (Integer)list.get(0);
}
public ArrayList getList(){
return list;
}
}
MyClass aName = new MyClass();
aName.add(5);
System.out.println("aName: "+aName.get());
MyClass aName2 = new MyClass(aName);
System.out.println("aName2: "+aName2.get());
aName2.set(1);
System.out.println("aName2: "+aName2.get());
System.out.println("aName: "+aName.get());
這將打印: aName:5 aName2:5 aName2:1 aName:1
我不希望我的第二個對象改變我的第一個對象的值。 有什麼辦法可以阻止這種情況發生,但仍然可以從其他對象複製屬性?
您需要製作內部ArrayList的副本,而不僅僅分配參考。例如'this.list = aClass.getList()。clone()' – nhahtdh 2012-07-26 19:37:54
爲什麼你要回滾自己的數組列表? – Wug 2012-07-26 19:41:39
@wug他不是,它圍繞數組列表創建行爲。 – corsiKa 2012-07-26 19:43:18