当前位置: 代码迷 >> java >> 添加到ArrayList后,出现NotSerializableException
  详细解决方案

添加到ArrayList后,出现NotSerializableException

热度:53   发布时间:2023-07-16 17:41:51.0

所以我有一个叫做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有什么特别之处吗?

问题是“路径”。 该类不可序列化。 例如,您可以将“路径”另存为字符串,并在加载时创建新路径。

为此实现readObject和writeObject并使路径瞬态。

  相关解决方案