我必須保存並加載國際象棋遊戲。在國際象棋,我有:如何在ObjectInputStream中讀取Object數組時解決InvalidClassException?
public class Chess
{
private Piece[][] pieceArray;
private Board board;
private int moves;
private boolean turn;
...
Set's and get's
}
我會加載轉,移動和矩陣。現在我只保存和加載矩陣(件[] [])
現在我有這些方法來保存和加載另一個類的遊戲 在這個類中,我有一個FTPClient連接到服務器。
保存遊戲:
public boolean saveGame(Chess chess) {
boolean error = false;
try {
File file = new File("game.save");
FileOutputStream fis = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(fis);
oos.writeObject(chess.getArray());
oos.close();
// Save that file in the server
FileInputStream fis = new FileInputStream(new File("game.save"));
client.storeFile("game.save", fis);
fis.close();
file.delete();
} catch (IOException e) {
e.printStackTrace();
}
return error;
保存遊戲帶給我沒有問題,順利進行。
現在這是我用來加載遊戲的方法,這是拋出invalidClassException的遊戲。
try {
FileInputStream fis = new FileInputStream(new File("game.save"));
ObjectInputStream ois = new ObjectInputStream(fis);
chess.setArray((Piece[][]) ois.readObject());
chess.paintInBoard();
ois.close();
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
每當我試着讀matriz我得到「java.io.InvalidClassException:[LPiece ;;現場無效的描述符」
我已經實現在片中和國際象棋Serializable接口。 我曾嘗試保存整個國際象棋類,但這樣做,我將不得不在其他8類實現Serializable接口,我試圖避免這一點。 我是否必須單獨閱讀每件作品?
非常感謝。