我想在java中實現複製構造函數。我正面臨類的非原始類型字段的問題。在創建新副本時,它正在共享成員。例在java中複製構造函數而不是克隆
public class Bad implements Cloneable {
private ArrayList<Integer> a;
private Object c;
public static void main(String[] args) {
Bad b1 = new Bad();
b1.a.add(10);
System.out.println(b1.a);
Bad b2 = b1.clone();
b2.a.add(12);
System.out.println(b1.a);
}
Bad() {
a = new ArrayList<>();
c = null;
}
Bad(Bad b) {
a = b.a;
c = b.c;
}
public Bad clone() {
return new Bad(this);
}
}
,其結果是:
[10]
[10, 12]
我不希望這種事情發生。以此爲例。我原來的問題包含更多用戶定義的字段。
或者是否有任何圖書館爲我工作?提前致謝。
嘗試'a = new ArrayList <>(b.a);'這應該使用b中的內容創建一個新的arrayList。一個' – Lino