【发布时间】:2015-06-25 21:38:50
【问题描述】:
我已经阅读了很多关于复制构造函数的帖子,但我似乎无法让它工作。我调用了复制构造函数,但对象仍然修改了原始对象:
public class Board {
private Square[][] board = getEmptyBoard();
public Board() {
}
public Board(Board originalBoard) {
Square[][] matrix = new Square[6][6];
for(int row = 0; row <= 5; row++) {
for(int col = 0; col <= 5; col++) {
matrix[row][col] = originalBoard.getSquare(row, col);
}
}
this.board = matrix;
}
[...]
}
该类对Square 类型的六乘六板进行建模。 Square 是一个对象,可以容纳一个或多个 Piece 类型的对象。
我怎样才能拿走我的原始板并制作它的精确副本,以便我可以在不接触原始Board 对象的情况下从Squares 添加和删除Pieces?
【问题讨论】:
-
显然您的
getSquare方法从originalBoard返回Square实例。您还应该为每个Square实例创建一个副本。 -
问题的标签表明你需要做深拷贝