哪种类不应该序列化

时间:2014-01-16 10:01:49

标签: java serialization deserialization objectoutputstream

java.io.ObjectOutputStream说“对于OutputStream的问题,异常被抛出,对于不应该序列化的类, 。”

这意味着什么......不应该序列化哪些类型

2 个答案:

答案 0 :(得分:3)

--->只有当对象的类或其超类实现Serializable(或Externalizable)接口时,该对象才可序列化。

--->对象是可序列化的(本身实现了Serializable接口),即使它的超类不是。但是,可序列化类的层次结构中的第一个超类(不实现Serializable接口)必须具有无参数构造函数。如果违反了此规则,readObject()将在运行时生成java.io.InvalidClassException。

--->每个不可序列化的超类的no-arg构造函数将在反序列化对象时运行。但是,反序列化的对象?构造函数在反序列化时不会运行。

--->该类必须在序列化时可见。

--->所有基本类型都是可序列化的。

--->瞬态字段(带有瞬态修饰符)未被序列化(即,未保存或恢复)。实现Serializable的类必须标记不支持序列化的类的瞬态字段(例如,文件流)。

--->静态字段(带有静态修饰符)未序列化。

--->如果可序列化对象的成员vairiables引用了不可序列化的对象,则代码将被编译但是将抛出RumtimeException。

答案 1 :(得分:0)

  

这意味着什么......不应该序列化哪些类型

措辞不好。这意味着有关的班级没有实施Serializable.