Java Сериализуемый Объект терпит неудачу
У меня проблема с записью объекта Serializable в файл. Я смог сузить проблему, но понятия не имею, что может вызвать это, поэтому я просто ищу совет, который может быть у кого угодно, потому что я не могу привести пример, но я дам некоторый код для рисования изображение.
По сути, у меня есть объект, хранящий информацию о программе, которую я сохраняю, записывая объект в файл. Он имеет 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());
}
}
Эта проблема возникает после того, как я добавляю элемент в DefaultComboBoxModel путем вызова model.addElement(). Однако проблема не возникает, если в моей программе есть только один экземпляр SomePanel, но если я создаю второй экземпляр SomePanel, он генерирует исключение java.io.NotSerializableException для объекта SomeOtherClass при попытке записать ProgramInfo в файл. Если я закомментирую SomeOtherClass, то следующий объект в классе SomePanel выдает ту же ошибку при попытке записать ProgramInfo в файл.
Как примечание, я не опытный программист, это просто хобби, и я полностью самоучка. Любой совет / материал для чтения о том, почему это может произойти, был бы великолепен. Заранее спасибо!
1 ответ
Поля также должны быть сериализуемыми, поэтому вы должны проверить, если DefaultComboBoxModel
инвентарь Serializable
, Я подозреваю, что это не так.
Вы должны увидеть это как ссылку для сериализации объекта.