import java.io.*;
public class Test {
public static void main(String[] args) throws IOException {
try ( ObjectOutputStream output =
new ObjectOutputStream(new FileOutputStream("object.dat")); ) {
output.writeObject(new A());
}
}
}
class A implements Serializable {
B b = new B();
}
class B {
}
为什么在以下代码中会出现javaNotSerializableException?请尽可能简化,因为我的测试能力不如我所希望的那样有充分的基础。
答案 0 :(得分:0)
之所以发生这种情况,是因为A
的(可序列化)实例引用了B
的实例。 B
类不可序列化。这意味着尽管被声明为A
,但Serializable
实例无法序列化。
Serializable
的{{3}}说明了这一点:
"在遍历图形时,可能会遇到不支持
Serializable
接口的对象。在这种情况下,NotSerializableException
将被抛出,并将识别非可序列化对象的类。"