Java 可序列化对象失败

标签 java serialization notserializableexception

我在将可序列化对象写入文件时遇到问题。我已经能够缩小问题的范围,但不知道是什么会导致这个问题,所以我只是在寻找任何人可能有的建议,因为我不能真正给出一个例子,但我会给出一些 shell 代码来描绘图片。

基本上,我有一个对象存储有关我通过将对象写入文件来保存的程序的信息。它有一个 DefaultComboBoxModel ,它是导致我的问题的一部分。例如:

public class ProgramInfo implements Serializable {
     private DefaultComboBoxModel model = new DefaultComboBoxModel();
     // A bunch of other stuff

     public DefaultComboBoxModel getModel() {
         return model;
     }
     public void setModel(DefaultComboBoxModel m) {
         model = m;
     }
}

然后,我有一个扩展 JPanel 的类,如下所示:

public class SomePanel extends JPanel {
    private SomeOtherClass someOtherClass = new SomeOtherClass();
    private ProgramInfo programInfo;
    // A bunch of other stuff

    public SomePanel(ProgramInfo info) {
        programInfo = info;
        initGUI();
    }

    private void initGUI() {
        JComboBox box = new JComboBox(programInfo.getModel());
    }
}

我通过调用 model.addElement() 将元素添加到 DefaultComboBoxModel 后出现此问题。但是,如果我的程序中只有一个 SomePanel 实例,则不会出现此问题,但如果我创建 SomePanel 的第二个实例,则在尝试将 ProgramInfo 写入文件时,它会在对象 SomeOtherClass 上抛出 java.io.NotSerializedException。如果我注释掉 SomeOtherClass,则 SomePanel 类中的下一个对象在尝试将 ProgramInfo 写入文件时会引发相同的错误。

请注意,我不是专家程序员,这只是一种爱好,而且我完全是自学成才。任何关于为什么会发生这种情况的建议/阅读 Material 都会很棒。提前致谢!

最佳答案

字段还必须可序列化,因此您应该检查 DefaultComboBoxModel 是否实现 Serializable。我怀疑事实并非如此。

您应该看到this作为对象序列化的引用。

关于Java 可序列化对象失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20366052/

相关文章:

java - 没有断点的调试命中 - Eclipse

java - JLine NonBlockingReader 的契约(Contract)似乎已被破坏

python - 在编写 JSON 时防止循环的 pythonic 方法是什么?

jsf-2 - ViewExpiredException:找不到已保存的 View 状态:在 JSF 中提交表单时

java - 为什么ant Manifest任务会分割长主类名?

java - Eclipse 在 Linux 上的 Java 进程中不释放内存

haskell - 类型的可串行化稳定表示

c# - 无法将 xml 反序列化为对象

java - 找不到 NotSerializedException 的来源

java - 仅第一次出现 NotSerializedException