我有一个名为State
的{{1}}对象。我试图通过调用函数state
来复制它,它使用复制构造函数创建一个名为applyMoveCloning()
的新State
对象。
newState
以下是我致电public State applyMoveCloning(State oldState, Move move) {
State newState = new State(oldState); // Calls copy constructor
applyMove(newState, move); // Calls applyMove() on the newState
return newState;
}
applyMoveCloning()
问题在于,每当我对State clonedState = game.applyMoveCloning(state, moves.get(i));
进行更改时,它都会更改旧clonedState
的属性,即使它们是不同的对象(一个只具有与另一个相同的属性)
这是我的复制构造函数
state
怎么会发生这种情况?这不像是我使用public State(State another) {
this.width = another.width;
this.height = another.height;
this.board = another.board;
}
进行克隆所以我不理解。
答案 0 :(得分:1)
哪些属性受到影响?
假设width
和height
是整数,它们会按值复制,不太可能发生变化。
board
看起来像一个参考,你的克隆状态正在与旧状态共享。