У меня есть ДРУГОЙ вопрос о сериализации, но на этот раз это касается собственного импорта сериализации 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
в java.io.ObjectOutputStream.writeObject0 (ObjectOutputStream.java:1081)
в java.io.ObjectOutputStream.writeObject (ObjectOutputStream.java:302)
в BinaryS.main (BinaryS.java:24)
edit: я знаю, что там написано 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, что легко исправить! Спасибо за вашу помощь!