在我的项目中,我操作一个由对象组成的多维数组。操作完成后,我想“重置”数组。我从这里和网络上测试了几十个“深拷贝”代码,但似乎没有人使用多维数组。我在用Java 7,你能给我个提示吗?
我所说的重置是指操作前的初始状态。因此,我想要创建我的数组的备份,并在以后恢复它。
发布于 2015-11-07 20:16:23
我认为这应该可以完成对所述数组的深入复制。
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的实例,只需删除内环即可。
https://stackoverflow.com/questions/33586642
复制相似问题