只是做了一个简短的阅读来尝试在我的代码中实现序列化。
基本上,我有一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
另外,在我的主要方法中序列化整个对象会更好吗?