我需要一些帮助..我一直在玩这个永远不知道我错过了什么,而且我确定它有点小但是我无法绕过它。我有一个包含Student
个对象的二叉搜索树,我正在尝试将树转换为列表,然后序列化列表,当程序再次运行时,反序列化该列表并将每个对象添加回树中'正在使用。我不知道为什么但是我的IOException一直被抓住了。
这是我写作的地方:
private void saveRecord() {
JOptionPane.showMessageDialog(null, "saving file...");
System.out.println("Saving records:");
ToListVisitor<Student> listVisit = new ToListVisitor<>();
tree.inOrderTraversal(listVisit);
System.out.println("List contains: " + listVisit.getList());
try (ObjectOutputStream output = new ObjectOutputStream(
new FileOutputStream(file))) {
output.writeObject(listVisit.getList());//something with this line?
} catch (FileNotFoundException fnfe) {
System.out.println("File not found");
} catch (IOException ioe) {
System.out.println("An error occured during serialization");
System.out.println(ioe.getMessage());
System.out.println(ioe.getStackTrace());
}
}// end saveRecord
我正在使用ToListVisitor
遍历并将每个对象添加到列表中,这似乎有效,因为当我运行行System.out.println("List contains: " + listVisit.getList());
时,它会显示所有内容,然后它会抛出错误,实际上没有任何序列化。
以下是访客类:
public class ToListVisitor<E extends Comparable<? super E>>
implements Visitor<E> {
List<E> list = new ArrayList<E> ();
public ToListVisitor() {
this.list = list;
}
public List<E> getList() {
return list;
}
public void visit( BSTNode<E> node ) {
System.out.println(node.element);
list.add( node.element );
}
}
任何人都可以看到我出错的地方吗???
答案 0 :(得分:1)
Student
需要实施Serializable
答案 1 :(得分:0)
Serializable接口没有任何方法。它可能看起来不是needet或只是一个信息插件。但实际上,java序列化(和其他框架)使用此接口来检查类是否可序列化。