2013-12-04 19 views
1

У меня возникла проблема с записью объекта Serializable в файл. Я смог сузить проблему, но понятия не имею, что бы это вызвало, поэтому я просто ищу совет, который может иметь, потому что я не могу дать пример, но я дам некоторый код оболочки для рисования изображение.Ошибка Java Serializable Object

В основном у меня есть объект, хранящий информацию о программе, которую я сохраняю, записывая объект в файл. У этого есть 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

Это исключение возникает, когда объект или член (ы) объекта не является сериализуемым. Проверьте, так ли это. –

+0

«Я смог сузить проблему ...» На что? «но понятия не имею, что может вызвать это». Почему? Исключение? Трассировки стека? – EJP

ответ

1

Поля также должны быть сериализуемыми, поэтому вы должны проверить, соответствует ли DefaultComboBoxModelSerializable. Я подозреваю, что нет.

Вы должны увидеть this в качестве ссылки для сериализации объекта.

Смежные вопросы