繁体   English   中英

不可序列化的Java

[英]Not Serializable Java

我不知道为什么我的课不能序列化。 正如您在下面的代码中看到的那样,我的类实现了Serializable接口。

public class Firm {

PrintWriter out = new PrintWriter(System.out, true);
Scanner sc = new Scanner(System.in);

Set<Worker> workers = new HashSet<>();

boolean saveToFile(){
    String fileName = "text.txt";
    ObjectOutputStream file;
    boolean save = false;
    try{
        file = new ObjectOutputStream(new FileOutputStream(fileName));
        file.writeObject(workers);
        file.close();
        save = true;
    }catch(IOException e){
        e.printStackTrace();
    }
    return save;
}
}

import java.io.Serializable;

public abstract class Worker implements Serializable {//Code

任何想法如何解决?

问题是PrintWriterScanner无法序列化; 您不能像这样序列化I / O连接。

如果需要它们,请将它们作为局部变量移动到使用它们的任何位置。 不要将它们存储在课程中。

您应确保Worker类中的所有字段也具有实现Serializable接口的类型。

根据您的类名和注释中的stacktrace片段,很可能您在Worker类中具有类型为Firm字段,由于其结构,该字段不可序列化。

因此,您至少要做两件事:

1) Firm类还必须实现Serializable接口

2)将Scanner字段标记为transient

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM