簡體   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