我需要克隆Cell對象的2d數組,但它不能像它應該那樣工作。每當我克隆迷宮,它克隆它,但當我修改一個,它也是可見的另一個2d陣列沒有深度克隆,變化影響到兩個陣列
有人知道什麼問題是?
public void cloneMaze(boolean backup)
{
if (backup) {
backupMaze = (Cell[][]) maze.clone();
for (int i = 0; i < maze.length; i++) {
backupMaze[i] = (Cell[]) maze[i].clone();
}
} else {
maze = (Cell[][]) backupMaze.clone();
for (int i = 0; i < backupMaze.length; i++) {
maze[i] = (Cell[]) backupMaze[i].clone();
}
}
}
請顯示「make changes」的含義。我懷疑你的意思是「maze [i] [j] .setFoo(...)」,它不是對數組的更改,而是對數組引用的對象的更改。你的副本還不是真的很深,因爲你需要克隆每個Cell。 –
你在迷宮中存儲什麼?數組中的對象是否是動態的? –
[對象數組的深層副本]的可能重複(http://stackoverflow.com/questions/3947227/deep-copy-of-an-object-array) – Mena