【发布时间】:2015-08-03 20:18:30
【问题描述】:
我正在尝试制作一个 ObjectA 的副本,其中包含另一个 ObjectB,其中还有 6 个其他 ObjectC,但我不想复制它们的任何内存地址,所以如果我更新了任何原始对象稍后,它不会更新副本的值(由所有三个对象组成)。我已经尝试实现 clone() 但这仍然不适用于我正在尝试做的事情。
这就是我想要做的(是的,我知道这看起来很荒谬......):
void rotateEntireCubeClockwise(){
System.out.println("Changing view of cube...rotating entire cube clockwise...");
CubeAlgorithms a2 = clone();
cube.left = a2.clone().cube.clone().front.clone();
cube.front = a2.clone().cube.clone().right.clone();
a2.clone().rotateTopClockwise(1);
cube.top = a2.clone().cube.clone().top.clone();
a2.clone().rotateTopCounterClockwise(1);//undo
a2.clone().rotateLeftClockwise(2);
cube.back = a2.clone().cube.clone().left.clone();
a2.clone().rotateLeftCounterClockwise(2);//undo
a2.clone().rotateBackClockwise(2);
cube.right = a2.clone().clone().cube.clone().back.clone();
a2.clone().rotateBackCounterClockwise(2);//undo
a2.clone().rotateBottomClockwise(1);
cube.bottom = a2.clone().cube.clone().bottom.clone();
}
public CubeAlgorithms clone() {
try {
return (CubeAlgorithms) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
throw new RuntimeException();
}
}
CubeAlgorithms 包含一个 Cube 对象,Cube 对象包含 6 个 CubeSide 对象(前、左、后、右、下、上)
Cube 和 CubeSides 都包含一个与您在上面看到的类似的克隆方法。
我对这段代码的问题是我希望它顺时针旋转一个立方体,但是它所做的唯一旋转是最后一个。
【问题讨论】:
标签: java object reference copy clone