问题描述
所以我有一个叫做World的课程:
public class World implements Serializable {
private int dx;
private int dy;
private int x;
private int y;
private Path path;
public ImageIcon image;
public ArrayList<Location> locations;
在将对象添加到ArrayList<Location> locations;
之前,我正在对其进行序列化和反序列化ArrayList<Location> locations;
现在,当我尝试运行序列化时
try {
FileOutputStream fos = new FileOutputStream(Main.board.worldpath.toString());
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(Main.board.world.image);
oos.writeObject(Main.board.world);
oos.close();
}catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
它将在此行中抛出java.io.NotSerializableException: sun.nio.fs.WindowsPath
oos.writeObject(Main.board.world);
类Location也可以序列化:
public class Location implements Serializable {
public int x;
public int y;
public String name;
public String desc;
我不确定为什么会说它不可序列化,所以序列化ArrayLists有什么特别之处吗?
1楼
问题是“路径”。 该类不可序列化。 例如,您可以将“路径”另存为字符串,并在加载时创建新路径。
为此实现readObject和writeObject并使路径瞬态。