java - 我需要帮助在 Java 中复制一个对象

标签 java oop

我正在用 Java 编写国际象棋游戏。我有一个包含 String 二维数组板的板类。我需要能够创建一个复制主板的临时板。在 tempBoard 上进行一些更改并运行测试,而无需更改 mainBoard 中的二维数组。

public class Board implements Cloneable {

public String[][] board = new String[][]{
    {"bR ", "bN ", "bB ", "bQ ", "bK ", "bB ", "bN ", "bR "},
    {"bp ", "bp ", "bp ", "bp ", "bp ", "bp ", "bp ", "bp "},
    {"   ", "## ", "   ", "## ", "   ", "## ", "   ", "## "},
    {"## ", "   ", "## ", "   ", "## ", "   ", "## ", "   "},
    {"   ", "## ", "   ", "## ", "   ", "## ", "   ", "## "},
    {"## ", "   ", "## ", "   ", "## ", "   ", "## ", "   "},
    {"wp ", "wp ", "wp ", "wp ", "wp ", "wp ", "wp ", "wp "},
    {"wR ", "wN ", "wB ", "wQ ", "wK ", "wB ", "wN ", "wR "}
};


public Board() {

}

@Override
public Object clone() throws CloneNotSupportedException {
    return super.clone();
}

Board tempBoard = (Board ) Mainboard.clone();
                    tempBoard.updateBoard(move);

^ 在 main 的另一个类中,我试图在 tempBoard 上更新 Board,但这也改变了 mainBoard 中的数组。有什么建议么?

最佳答案

Java 的 clone() 是 troublesome .尝试复制构造函数。

public static Board newInstance(Board board)
{
    // Set fields as appropriate to your Board class
    return new Board(board.getFoo(), board.getBar());
}

关于java - 我需要帮助在 Java 中复制一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29218744/

相关文章:

java - 在 java server faces 中显示删除线数据

java - 非阻塞匹配器查找

java - 是否可以在 Java 中创建一个对输入法进行计时的方法?

java - Java中包装器的概念

oop - 依赖抽象有什么明显的缺点吗?

python - 为什么列表是共享的而不是 python 中的变量(类级别)

java - Cassandra-cli 无法连接到远程 cassandra 服务器

java - 模拟与正在测试的类不同的类函数

C++模板化接口(interface)

php - Controller 可以有数据库查询(MySQL)吗?如果是,什么时候?