-1
我正在寫一個搜索算法來解決Java中的15個難題問題。 當我克隆難題狀態以產生新的可能動作(女兒)時,他們仍然彼此改變,而不是分開。覆蓋克隆方法 - 不工作(Java)
這裏是我的克隆方法:
public FifteenPuzzleState clone() throws CloneNotSupportedException
{
FifteenPuzzleState copy = (FifteenPuzzleState)super.clone();
for(int i=0; i<copy.currentConfig.length; i++){
copy.currentConfig[i] = Arrays.copyOf(currentConfig[i], currentConfig[i].length);
}
return copy;
}
所以我的問題是,經過我克隆狀態,然後改變它,它也會影響到以前的狀態和所有其他克隆。 我的第一個想法是,我沒有正確創建2d數組的深層副本,但是我找不到上面的代碼有任何問題。
有什麼建議嗎? 謝謝
對象的哪部分受到克隆變更的影響?沒有自動深度複製,因此您需要確保克隆所有內容。 – ChristopheD
如果你想要一個深度克隆,你必須自己照顧,對不起。 –