我已经按如下方式定义了一个类:
Public class Board{
public static final int SIZE = 4;
private static char[][] matrix = new char[SIZE][SIZE];
public Board(){
clear();//just fills matrix with a dummy character
}
public void copy(Board other){//copies that into this
for(int i = 0; i < SIZE; i++){
for(int j = 0; j < SIZE; j++){
matrix[i][j] = other.matrix[i][j];
}
}
}
//a bunch of other methods
}
所以这就是我的问题:当我尝试复制时,如myBoard.copy(otherBoard)
,对一个电路板所做的任何更改都会影响另一个电路板。我复制了单独的原始元素,但两个板的matrix
引用是相同的。我以为我是复制元素,为什么指针一样?我该怎么做才能解决这个问题?
答案 0 :(得分:5)
matrix
为static
,因此所有Board
个对象都共享相同内容。
删除static
以使每个Board
拥有自己的矩阵。
private static char[][] matrix = new char[SIZE][SIZE]; <-- Because of this line
matrix[i][j] = other.matrix[i][j]; <-- These two are the same.
答案 1 :(得分:2)
更改
private static char[][] matrix = new char[SIZE][SIZE];
到
private char[][] matrix = new char[SIZE][SIZE];
static
表示此数组只有一个实例。