我在 src 中有三个包:模型、视图和控制器。视图有几个 JFrame,模型有几个处理程序逻辑的类,控制器有一个包含视图中 JFrame 实例的类,而模型中只有一个对象,称为“板”。我应该提到,在模型中有一个名为 Saver 的类,它只有一个静态方法来加载和一个静态方法来保存这个对象“板”。
当我尝试序列化对象“板”(板和模型中的所有类都是可序列化的)时,我从视图中的所有类和控制器类中的所有内部类中进入堆栈跟踪 NotSerializableException,当我只是想序列化属于模型的“板”,并且板的所有变量都是可序列化的。
以下是从 Saver 类保存和加载的方法:
public class Saver {
public static void saveBoard(Board board) throws IOException{
FileOutputStream fileOutputStream = new FileOutputStream("gosavefile.gsf");
ObjectOutputStream obout = new ObjectOutputStream(fileOutputStream);
obout.writeObject(board);
fileOutputStream.close();
obout.close();
}
public static Board loadBoard() throws IOException, ClassNotFoundException{
FileInputStream fileInputStream = new FileInputStream("gosavefile.gsf");
ObjectInputStream obin = new ObjectInputStream(fileInputStream);
Board board = (Board) obin.readObject();
fileInputStream.close();
obin.close();
return board;
}
}
这就是我从控制器类调用 saveBoard() 方法的地方:
public void save(){
try{
Saver.saveBoard(board);
} catch (IOException e) {
new SaveErrorWindow(mainMenuWindow.getLanguageManager());
e.printStackTrace();
}
}
我以前做过一次这样的事情,另一个程序使用了相同的确切方案,并且效果很好。所以我真的不明白为什么当我只序列化“板”时它试图序列化其他所有东西。
如果需要代码的任何其他部分,请询问。
先感谢您!