我正在使用 2D 数组 (4x4) 制作一个基本游戏,其中必须切换元素(具有整数 1 到 16 的对象类型)以达到特定的目标状态,该状态必须与当前状态进行比较, 因此需要复制。
到目前为止我有:
public void cloneArray() throws CloneNotSupportedException
{
ClassName copy = (ClassName)super.clone();
copy.tiles = (Tile[][]) tiles.clone();
}
这看起来是对的,还是我遗漏了什么?
最佳答案
您需要更进一步,然后这样做:
ClassName copy = (ClassName)super.clone();
copy.tiles = (Tile[][]) tiles.clone();
for(int i = 0; i < copy.tiles.length; i++) {
copy.tiles[i] = (Tile[]) tiles[i].clone();
}
原因是克隆对顶层数组进行了浅拷贝,顶层数组持有对其他数组的引用。
关于java - 包含所有元素的二维数组的深拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6129428/