我正在创建一个简单的游戏,并试图克隆构成木板的对象以进行AI处理,而不影响实际游戏。
即使在堆栈中的任何地方/我在try / catch循环中使用的这些克隆,我都收到“未处理的异常:java.lang.CloneNotSupportedException”。
这是代码。 我有实现Clonable的Space类(大部分被嗅探到了)(可能是问题的一部分):
public class Space extends Pane implements Cloneable {
public Space(int x, int y, boolean light) {
}
protected Object clone() throws CloneNotSupportedException {
try {
return super.clone();
} catch (Exception e) {}
return new Object();
}
}
在另一个(对象)类中,我尝试复制此空间对象数组:
public Space[][] copyBoard(Space[][] thisBoard) throws CloneNotSupportedException {
Space[][] copy = new Space[8][8];
for (int x = 0; x < 8; x++) {
for (int y = 0; y < 8; y++) {
Space thisSpace = thisBoard[x][y];
try {
copy[x][y] = (Space) thisSpace.clone();
} catch (Exception e) {}
}
}
return copy;
}
最后,错误发生在另一个类(对象)中:
try { //this in my constructor
space.setOnMouseClicked(e-> onClick(finalX,finalY)); //error on "onClicked"
} catch (Exception e) { }
public void onClick(int x, int y) throws CloneNotSupportedException{
if (processMove(move)) {
setActiveSpace(null);
try {
processMove(compPlayer.getBestMove(spaceBoard)); //getBestMoves copys SpaceBoard, and deals w/ the exception too.
} catch (Exception e) {}
}
“ onClick”带有红色下划线,表示未处理的克隆错误。
如果您需要更多我的代码,请告诉我,我将其删节了以缩短时间(尽管可能会丢失某些缺少的变量或内容)。
谢谢