Java序列化问题总结

Java序列化问题总结

原文地址:http://blog.csdn.net/kjfcpua/article/details/8591708

下面是一些复杂对象情况下一些总结:

l   当父类继承Serializable接口,所有子类都可以被序列化
l   子类实现了Serializable接口,父类没有,父类中的属性不能序列化(不报错,数据会丢失),但是子类中属性人能正确序列化
l   如果序列化的属性是对象,这个对象也必须实现Serializable接口,否则会报错
l   在反序列化时,如果对象的属性有修改或删减,修改的部分属性会丢失,但不会报错
l   在反序列化时,如果serialVersionUID被修改,那么反序列化时会失败
l   如果一个父类没有实现Serializable接口,他的内部类如果不是static的,即使实现了序列化接口,也会序列失败。因为非静态内部类会保存一个指向父类的类型this变量,而序列化类的所有属性必须实现序列化接口,所以要将内部类设置成静态类
l   List或者Map容器中包含的泛型类型也必须实现Serializable接口,否则也会报java.io.NotSerializableException
     另外:序列化时判断属性是否可序列化是根据对象实际类型是否序列化而不是引用对象的类型。

你可能感兴趣的:(Java序列化问题总结)