我需要克隆一个2d的Cell对象数组,但它并没有按预期工作。每当我克隆迷宫时,它会克隆它,但是当我对其进行更改时,它也可以在另一个上看到
有人知道问题是什么???
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();
}
}
}
答案 0 :(得分:1)
在备份迷宫中,您需要创建 new
Cell
,这是第一个
否则你的两个迷宫指向相同的物体,因此对细胞的修改会反映在两个迷宫中。
clone()
只是数组的浅层副本,而您似乎在寻找深层副本。