Java Serializable Object失败

时间:2013-12-04 03:08:24

标签: java serialization notserializableexception

我遇到了将Serializable对象写入文件的问题。我已经能够缩小问题的范围,但不知道是什么原因造成的,所以我只是在寻找任何人可能有的建议,因为我无法给出一个例子,但我会给出一些用于绘制图片的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.NotSerializableException。如果我注释掉SomeOtherClass,那么SomePanel类中的下一个对象在尝试将ProgramInfo写入文件时会抛出相同的错误。

作为一个说明,我不是一个专业程序员,这只是一个爱好,我完全是自学成才。关于为什么会发生这种情况的任何建议/阅读材料都会很棒。提前谢谢!

1 个答案:

答案 0 :(得分:1)

字段也必须是可序列化的,因此您应该检查DefaultComboBoxModel是否实现Serializable。我怀疑它没有。

您应该看到this作为对象序列化的参考。