What is serialVersionUID?
What is a serialVersionUID and why should I use it?
两篇好文章把这个问题解释透彻了。
1. 为什么需要这个serialVersionUID ? 版本控制。 Class A对象被序列化到文件,A升级至A' , 文件中的内容被反序列化,转成A‘ ,你期望它报错吗?
2. 为什么不可以使用默认值? 默认值的生成规则很trick,也与平台相关,这种不可预测的特性会带来麻烦。比如一个域的可见性从private变成public,你期望serialVersionUID不变,但如果采用默认值,它可能就变了,你不能控制。
3. 加入serialVersionUID是一次性的工作吗? 不。否则就成了摆设,起不到版本控制的作用,当我们确定类的升级不向后兼容时,serialVersionUID++是个好习惯。