코드에 직렬화를 시도하고 구현하기위한 간단한 글을 읽었습니다.자바에서 객체 직렬화하기
기본적으로 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
개체를 직렬화하는 것이 더 좋을까요?
질문 클래스 전체 코드 입력 –