別のシリアライゼーションの質問がありますが、今回はバイナリにシリアライズするときの Java のネイティブ シリアライゼーション インポートに関するものです。別の Java ファイルで生成されたランダム ツリーをシリアル化する必要があります。シリアライゼーションとデシリアライゼーションがどのように機能するかは知っていますが、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 at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1081) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302) at 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 ファイルをダウンロードする必要があることに気づきませんでした。今すぐ簡単に修正できます! ご協力いただきありがとうございます!