序列化抛出IO异常的列表

时间:2014-04-21 23:52:51

标签: java serialization

我需要一些帮助..我一直在玩这个永远不知道我错过了什么,而且我确定它有点小但是我无法绕过它。我有一个包含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 );
}


}

任何人都可以看到我出错的地方吗???

2 个答案:

答案 0 :(得分:1)

Student需要实施Serializable

答案 1 :(得分:0)

Serializable接口没有任何方法。它可能看起来不是needet或只是一个信息插件。但实际上,java序列化(和其他框架)使用此接口来检查类是否可序列化。