シリアル化をコードに実装しようと、簡単に読んだだけです。
基本的に、私はTest
たくさんのQuestions
. Test
可能であればオブジェクト全体を一度にシリアル化するか、そうでない場合はそれぞれQuestion
. 今、私はそれぞれをやろうとしていますQuestion
。
public abstract class Question implements Serializable {
...
}
public class Test {
...
public void save() {
try {
System.out.print("File name will be saved.ser: ");
FileOutputStream fileOut = new FileOutputStream("saved.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
for (Question question : questionList) {
out.writeObject(question);
}
out.close();
fileOut.close();
} catch(IOException i) {
i.printStackTrace();
}
}
そして、このエラーが発生します:
java.io.NotSerializableException: java.util.Scanner
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at main.Survey.save(Survey.java:129)
at main.MainDriver.main(MainDriver.java:59)
すべてのオブジェクトがQuestion
実装されているわけではないという問題はありSerializable
ますか? それもやる必要ある?それはかなり面倒に思えますが、必要に応じて実行します。で使用されるすべてのクラス (そのQuestion
サブクラスを含む) に、そのインターフェイスを指定する必要がありますか?
Test
また、メイン メソッドでオブジェクト全体をシリアライズしたほうがよいでしょうか。