首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >深拷贝二维物体阵列

深拷贝二维物体阵列
EN

Stack Overflow用户
提问于 2015-11-07 19:05:20
回答 1查看 106关注 0票数 0

在我的项目中,我操作一个由对象组成的多维数组。操作完成后,我想“重置”数组。我从这里和网络上测试了几十个“深拷贝”代码,但似乎没有人使用多维数组。我在用Java 7,你能给我个提示吗?

我所说的重置是指操作前的初始状态。因此,我想要创建我的数组的备份,并在以后恢复它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-07 20:16:23

我认为这应该可以完成对所述数组的深入复制。

代码语言:javascript
复制
private static class CloneableObject
        implements
            Cloneable {

    @Override
    public CloneableObject clone() {
        return new CloneableObject();
    }
}


CloneableObject[][] original;


void someMethod() {
    CloneableObject[][] copy = Arrays.copyOf(this.original, this.original.length);
    for (int i = 0; i < copy.length; i++) {
        copy[i] = Arrays.copyOf(copy[i], copy[i].length);
        for (int j = 0; j < copy[i].length; j++) {
            copy[i][j] = copy[i][j].clone();
        }
    }

    /*
     * Manipulation of this.original is to be done here
     * None of the manipulations will be reflected in copy
     * 
     * Note that (this.original[n][m] == copy[n][m]) will evaluate to false,
     * where n and m are arbitrary indices of the array.
     */

    this.original = copy; // "reset"
}

如果希望不复制Object的实例,只需删除内环即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33586642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档