我還有一個問題,系列化,但這次串行二進制時,它是關於Java的本機序列導入。我必須序列化在另一個java文件中生成的隨機樹。我知道序列化和反序列化是如何工作的,但是當我使用java.io.Serializable使用二進制序列化時,我遵循的例子並不像我使用它時那樣工作,比如說一個簡單的對象。這裏是我的代碼段:實現樹時使用java.io.Serializable?
import java.io.*;
import java.io.FileInputStream;
public class BinaryS
{
public static void main(String[] args) {
Tree randomTree = RandomTreeBuilder.randomTree(10);
FileOutputStream fOut=null;
ObjectOutputStream oOut=null;
try{
fOut= new FileOutputStream("/Users/Pat/programs/binaryfile.txt");
oOut = new ObjectOutputStream(fOut);
oOut.writeObject(randomTree); //serializing randomTree
System.out.println("An employee is serialized into /Users/Pat/binaryfile.txt");
}catch(IOException e){
e.printStackTrace();
}finally{
try {
oOut.flush();
oOut.close();
fOut.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
});
我相信問題是當我使用writeObject(randomTree)。我得到一些終端例外,當這種情況發生......他們都低於:
java.io.NotSerializableException:GeneralTree 在java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1081) 在java.io.ObjectOutputStream中。的writeObject(ObjectOutputStream.java:302) 在BinaryS.main(BinaryS.java:24)
編輯:我知道這說GeneralTree,但在類是在我開始把
print("public class RandomTreeBuilder implements java.io.Serializable");
然後,在它下面找到GeneralTree
print(" protected static Tree tree;
protected static ArrayList names;
//e6.1
/**
*Builds a random tree. The build method does the work.
*/
//b6.2
public static Tree randomTree(int n) {
// Create a random binary tree with n external nodes
tree = new GeneralTree();
names = NameGenerator.getNames();
build(tree.getRoot(), n); // auxiliary recursive method
return tree;
「);
更新:嘿傢伙,我想出了我自己的問題,結果我是一個白癡,並沒有意識到我不得不下載一個額外的.java文件,一個簡單的修復吧!謝謝你的幫助!