java - 包含所有元素的二维数组的深拷贝

标签 java multidimensional-array deep-copy

我正在使用 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/

相关文章:

java - Tomcat 从 URL 中删除上下文路径

php - CodeIgniter多维数组存储在mysql数据库单列中

c++ - 如何获取多维结构数组的长度?

arrays - 这个使用范围的简单 For 循环如何以及为什么在 Go 中打印一个简单的 3D 数组?

javascript - 没有某些字段的深度克隆

java - Java 类可以在运行时向自身添加方法吗?

java - 如何抛出多个异常的不同方式

java - 编写使用类的两个实现之一进行编译的 Java 代码

Swift 2.0 按值传递

javascript - 检测复杂对象的变化