[英]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
任何想法如何解決?
問題是PrintWriter
和Scanner
無法序列化; 您不能像這樣序列化I / O連接。
如果需要它們,請將它們作為局部變量移動到使用它們的任何位置。 不要將它們存儲在課程中。
您應確保Worker
類中的所有字段也具有實現Serializable
接口的類型。
根據您的類名和注釋中的stacktrace片段,很可能您在Worker
類中具有類型為Firm
字段,由於其結構,該字段不可序列化。
因此,您至少要做兩件事:
1) Firm
類還必須實現Serializable
接口
2)將Scanner
字段標記為transient
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.