2个"链接"对象

Squ*_*zer 0 java object

我有2个单独的对象,分别创建,但是当我改变一个时,另一个一旦改变.

这是对象创建代码:

private sMap unsolvedSudoku = new sMap();
private sMap solvedSudoku = new sMap();
private sMap userSudoku = new sMap();

algorithm alg = new algorithm(unsolvedSudoku);
Run Code Online (Sandbox Code Playgroud)

这是更改一个对象的代码:

//Generate a new sudoku
alg.generateFullList(); // - This changes unsolvedSudoku
solvedSudoku.setMatrix(unsolvedSudoku.getMatrix()); // - This basically copies an array of numbers from unsolvedSudoku to solvedSudoku.
new algorithm(solvedSudoku).printMap(); //  This just prints out the array of numbers
alg.removeRandomNumbers(level); // This removes random numbers from unsolvedSudoku
new algorithm(solvedSudoku).printMap(); // this prints out the array again.
Run Code Online (Sandbox Code Playgroud)

第一个printMap和第二个printMap是不同的,但它们不应该(至少据我所知).这是为什么?此外,sMap类没有任何静态变量或方法

Pau*_*ora 5

我怀疑问题在这里:

solvedSudoku.setMatrix(unsolvedSudoku.getMatrix());
Run Code Online (Sandbox Code Playgroud)

您只是复制对同一个数组实例的引用,而不是实际复制其内容.要复制数组,您可以使用System.arraycopy().该Arrays实用工具类也有用于复制阵列一些有用的方法.

我假设从名称"矩阵"这是一个二维数组 - 在这种情况下,它不会像复制外部维度那么简单,因为元素仍将是对相同内部数组的引用.您需要将每个内部数组单独复制到一个新的外部数组中.

我会留下你的想法,因为你现在有了它的工具.