Я создаю простую игру и пытался клонировать объекты, составляющие игровое поле, для обработки ИИ без влияния на саму игру.
Я получаю «Необработанное исключение: java.lang.CloneNotSupportedException», хотя везде в стеке / где я использую эти клоны, которые есть в циклах try / catch.
Воткод.У меня есть свой класс Space (большая часть которого snpied), который реализует Clonable (это может быть частью проблемы):
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();
}
}
В другом (объектном) классе я пытаюсь сделать копию этого массива Spaceобъекты:
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" подчеркнут красным, что говорит о необработанной ошибке клонирования.
Если вам нужно больше моего кода, дайте мне знать, я сократил его для сокращения (хотя могут быть ссылки на некоторые пропущенные переменные или вещи).
Спасибо