复制 Java 个变量

Copy Java Variables

我的程序中有以下内容:

 public static GameBoard possibleStates(GameBoard GameState, int turn)
    {
        printGameBoard(GameState); //getting what is passed in here
        int innerCounter = 0;
        int outerCounter = 0;
        while(outerCounter < 3)
        {
            while(innerCounter < 3)
            {
                if(GameState.Board[outerCounter][innerCounter].isEmpty())
                {
                    GameBoard PossibleBoard = new GameBoard();
                    PossibleBoard.Copy(GameState);
                    PossibleBoard.Board[outerCounter][innerCounter].ModifyOccupy(move); //the problem is here, changes to possibleboard are also reflected in gamestate
                    GameState.AddToActions(PossibleBoard);
                }
                innerCounter++;
            }
            innerCounter = 0;
            outerCounter++;
        }
        return GameState;
    }

我的问题是改变一个,改变另一个的值。我知道这是因为他们在内存中引用了相同的 space,我只是不知道如何不让他们那样做。我已经尝试过对我的游戏板使用 Copy 方法和 Clone 方法 class,它们没有任何区别。

在实际创建副本的复制方法内部,您需要创建一个深拷贝。那就是复制引用是不够的,您还需要创建新对象并使用原始对象的状态对其进行初始化。

只有这样,它才是一个完全独立的对象,不会改变原来的对象。

这可能是一个有用的细节

What is the difference between a deep copy and a shallow copy?