0%

Java序列化机制释疑

一、同一个Java Bean

一个Java Bean序列化时状态以“A”指代,反序列化时状态以“B”指代,那么存在如下兼容性描述:

  • 如果A和B的serialVersionUID字段值不一致,那么反序列化“序列化A生成的字节流”尝试获取B时失败,抛出java.io.InvalidClassException异常
  • 如果A和B的serialVersionUID字段值一致,那么B相对于A增加或者减少字段,都不影响反序列化“序列化A生成的字节流”尝试获取B时的成功

二、不同Java Bean

不同的两个Java Bean “C”和“D”(包括“类名不同”和“类名相同,所在包路径不同”),无论其中的“serialVersionUID”字段值是否一致,反序列化“序列化C生成的字节流”尝试获取D时失败,抛出java.lang.ClassCastException异常

三、有序列表或者数组中的元素顺序保持不变

对于有序列表或者数组,经过序列化和反序列化后,有序列表或者数组中的元素顺序保持不变。

您的支持将鼓励我继续分享!