class 中的 class 序列化

Serialization of a class inside the class

我目前正在尝试制作具有 serialize 方法的 class Singleton。 objective是在自己的函数中序列化Singleton。有什么方法可以在 class 中序列化 class 吗?

这是我尝试过的示例:

public void serialize() {
    Singleton commit = this.getInstance();

    try {
        FileOutputStream fileOut = new FileOutputStream(new Config().getDataFile());
        ObjectOutputStream out = new ObjectOutputStream(fileOut);
        out.writeObject(commit);
        out.close();
        fileOut.close();
    } catch (Exception e) {
        System.out.println("Unable to commit database changes.");
        e.printStackTrace(System.out);
    }
}

下面的堆栈跟踪:

Unable to commit database changes.
java.io.NotSerializableException: com.cuistot.data.Singleton
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
    at [...].Singleton.serialize(Singleton.java:50)
    [...]

您的 class 实施 Serializable 了吗?

查看 source code for ObjectOutputStream.writeObject0,如果对象不是 Serializable,它会抛出 NotSerializableException