Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 序列化引发IO异常的列表_Java_Serialization - Fatal编程技术网

Java 序列化引发IO异常的列表

Java 序列化引发IO异常的列表,java,serialization,Java,Serialization,我需要一些帮助。。我一直在玩这个游戏,不知道我错过了什么,我相信这是一个小东西,但我不能把我的头围绕它。我有一个包含Student对象的二进制搜索树,我试图将该树转换为一个列表,然后序列化该列表,当程序再次运行时,反序列化该列表并将每个对象添加回我正在使用的树中。我不知道为什么,但我的例外总是被抓住 以下是我写作的地方: private void saveRecord() { JOptionPane.showMessageDialog(null, "saving file...

我需要一些帮助。。我一直在玩这个游戏,不知道我错过了什么,我相信这是一个小东西,但我不能把我的头围绕它。我有一个包含
Student
对象的二进制搜索树,我试图将该树转换为一个列表,然后序列化该列表,当程序再次运行时,反序列化该列表并将每个对象添加回我正在使用的树中。我不知道为什么,但我的例外总是被抓住

以下是我写作的地方:

    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

有人知道我的错误在哪里吗?

学生
需要实现可序列化可序列化接口没有任何方法。它可能看起来不需要,或者只是一个信息插件。但是内部java序列化(和其他框架)使用此接口检查类是否可序列化。

什么IOException?您应该在问题中发布堆栈跟踪。这不是一个猜谜游戏。@EJP}catch(IOException ioe){System.out.println(“序列化过程中发生错误”);System.out.println(ioe.getMessage());System.out.println(ioe.getStackTrace());}我问的是堆栈跟踪,而不是如何打印。事实上你做错了。应该是“ioe.printStackTrace()”。啊!谢谢你我真不敢相信我错过了。。就这样@听到这个消息我很高兴。请随意投票,接受这个答案。
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 );
}


}