【发布时间】:2014-08-04 00:00:38
【问题描述】:
我需要克隆一个 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();
}
}
}
【问题讨论】:
-
请说明您所说的“进行更改”是什么意思。我怀疑您的意思是“maze[i][j].setFoo(...)”,这不是对数组的更改,而是对数组引用的对象的更改。您的副本仍然真正深 - 为此,您还需要克隆每个
Cell。 -
你在迷宫中储存了什么?数组中的对象是动态的吗?
-
Deep copy of an object array 的可能重复项
-
迷宫中的物体在游戏开始时生成,并根据动作等变化。