2011-12-14 77 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。

任何具有experienc eof序列化的人都可以提供任何更簡單的錯誤,我可能會感到恐懼嗎?

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 2011-12-14 14:31:44

回答

1

您的Node需要執行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