我们在实现Serializable接口进行序列化传输的时候,经常会涉及到定义一个long型的serialVersionUID,我们来说一下其作用。
这里假设A端序列化传输,B端进行反序列化。
1、A、B俩端序列号不一致
结果:报java.io.InvalidClassException异常
2、A、B俩端序列号一致,A端新增字段,B端不变
结果:序列化和反序列化正常,不过新增字段在B端被忽略丢失
3、A、B俩端序列号一致,A端不变,B端减少一个
结果:序列化和反序列化正常,B端比A端多一个字端,减少的那个被B端忽略
4、A、B俩端序列号一致,A端不变,B端增加一个
结果:序列化和反序列化正常,A端不变,B端多一个字端并且设置对应类型的初始值