Heyho,看看這個類我該如何讓這個拷貝構造函數在java中進行深層拷貝?
public class ComplexFoo {
TreeMap<String, String> field1;
double[] field2;
public ComplexFoo() {
field1 = new TreeMap<String, String>();
field2 = new double[1];
}
public ComplexFoo(ComplexFoo cf){
field1 = cf.field1;
field2 = cf.field2;
}
public static void main(final String[] args) {
ComplexFoo foo = new ComplexFoo();
foo.field2[0] = 5.0;
ComplexFoo bar = new ComplexFoo(foo);
bar.field2[0] = 3.0;
System.out.println(foo.field2[0]);
}
}
這將打印3.0。我想這是因爲我的拷貝構造函數只拷貝了對數組/映射的引用,而不是真正的數據結構。我需要更改哪些內容才能確保進行深度複製?
如果我編寫一個將ComplexFoo作爲字段的類,我是否必須編寫一個使用ComplexFoos拷貝構造函數的拷貝構造函數,或者是否存在任何可以使用的遞歸深度拷貝機制?
您發佈不編譯代碼:沒有沒有'ComplexFoo()'的參數構造函數,任何'bsp'應該是不存在的。 –
我確實在尋找'clone()'方法。 –