2011-12-14 4 views
0

У меня есть кусок кода, который пытается выполнить простой двоичный файл «20 вопросов игры».Код ошибки с простой сериализацией Java

Это проект первого года и реализован с очень простым двоичным деревом yes-no.

Ошибка:

java.io.NotSerializableException: Node 
    at java.io.ObjectOutputStream.writeObject0(Unknown Source) 
    at java.io.ObjectOutputStream.writeObject(Unknown Source) 
    at Game.main(Game.java:41) 

Я сделал обширный поиск этой ошибки, однако это было очень трудно найти те, которые не были chuncks из огромного количества ошибок в некоторых онлайн-форуме.

Может ли кто-нибудь с сериализацией exexseve предложить более простые ошибки, которые я могу исправить?

try 
    { 
     FileOutputStream fos = new FileOutputStream("tree.ser"); 
     ObjectOutputStream out = new ObjectOutputStream(fos); 
     out.writeObject(rootnode); 
     out.close();   

- пример, на который указывают ошибки.

Полное Noob здесь.

+0

Я бы рекомендовал вам ознакомиться с сериализацией Java. Вот один учебник: http://java.sun.com/developer/technicalArticles/Programming/serialization/ – NPE

+0

Выполняет ли 'Node'' Serializable'? –

+0

Является ли Node Serializable? – marioosh

ответ

1

Ваш Node s необходимо реализовать интерфейс Serializable. Убедитесь, что вы понимаете, что такое «serializationID» и использовать его.

0

Используйте то, что, как показано ниже на Node класса:

class Node implements java.io.Serializable { 
    ... 
} 
0

Если вы хотите сериализовать объекты, то классы этих объектов необходимо реализовать интерфейс Serializable. Сообщение об ошибке сообщает, что ваш класс Node не реализует интерфейс Serializable. Закрепление это очень легко, изменить класс Node:

class Node implements Serializable { 
    // ... 
} 

Интерфейс Serializable не имеет методов (это интерфейс маркер); вам не нужно реализовывать какие-либо методы, просто создайте класс для реализации интерфейса.

Чтобы сделать это, ваш класс также должен иметь переменную serialVersionUID.

См. this article (старый, но все же релевантный) о сериализации. Обратите внимание, что не только ваш класс Node, но и все классы переменных-членов класса Node также должны реализовывать Serializable.

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

  • Нет связанных вопросов^_^