NotSerializableException:意外

时间:2015-04-06 12:05:12

标签: java serialization

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?请尽可能简化,因为我的测试能力不如我所希望的那样有充分的基础。

1 个答案:

答案 0 :(得分:0)

之所以发生这种情况,是因为A的(可序列化)实例引用了B的实例。 B类不可序列化。这意味着尽管被声明为A,但Serializable实例无法序列化

Serializable的{​​{3}}说明了这一点:

  

"在遍历图形时,可能会遇到不支持Serializable接口的对象。在这种情况下,NotSerializableException将被抛出,并将识别非可序列化对象的类。"