Java中的类序列化:更改字段名称或getter / setter名称后的兼容性

问题描述

假设我们在Java中有一个Serializable类,并且我们更改了该类成员名称(仅名称)和/或它的getter或setter,会导致兼容性错误吗?

解决方法

重命名字段等同于删除,该字段属于规范中的Incompatible Changes部分。

5.6.1不兼容的更改
对类的不兼容更改是指不能保持互操作性保证的那些更改。演化类时可能发生的不兼容更改是:

删除字段-如果在类中删除字段,则写入的流将不包含其值。当较早的类读取流时,该字段的值将设置为默认值,因为流中没有可用的值。但是,此默认值可能会对早期版本履行合同的能力产生不利影响。