IDEA 设置 快速生成serialVersionUID

在介绍serialVersionUID的自动生成设置(非常简单,就两步,后面有),我觉得我有必要有我个人的理解去描述一下 这个

Serializable,‘序列化’是什么意思? 作用是啥?  
因为我之前也没做了解,也只是跟着序列化序列化。

个人理解:

序列化, 这个东西有什么用呢。  
举个例子, 暗号,大家都知道吧。 暗号的背后是有它的意义的。 (例如敲门三长两短,代表:自己人,开门吧)
 

那么给一个实体类序列化, 我个人认为,就是将类暗号化。
 

例如,我创建一个User类, 开始只有姓名、年龄这两个字段。 然后我给这个类起暗号(序列化),暗号就叫123456789L,,一旦取了暗号,我们(交流双方)都知道了暗号背后的意义。 那么我们看到暗号就等于能知道里面有姓名、年龄这两个字段。

(以上是个人庸俗的表达)

现在来说序列化类的2种情况以及一些个人测试结论,

① 仅仅在类后面 继承了Serializable(没有自己设置一个序列化号 类似

private static final long serialVersionUID = -6247771733775111242L;

)。 

那么在我们正常给这个类起暗号的时候,大家都是能正确解读背后的意义的。 但是, 如果我私下把暗号背后的意义修改了,也就是在对User类起完暗号后,把User类的字段加上了身高、体重这些额外的字段。 那么。你(反序列化读取相关信息)不知道,你还保留在之前的思想,暗号是123456789L。 然后这种情况,大家的信息就不对称了,那么你就会反序列失败。

这种情况是,仅仅是继承了Serializable,序列化号是java自己帮你设置的。

②不仅在类后面 继承了Serializable,而且自己设置了序列化号。

这种情况,在类被序列化之后, 你再怎么修改内容,因为我们自己设置好了序列化号, 在反序列化的时候,会根据这个序列化号去查出对应的类的内容,这样就不会出现信息不匹配了。

所以,我推荐,给序列化,那么就继承Serializable并设置下自动生成下序列化号。

自动设置生成serialVersionUID方法如下:

(设置完后,继承下Serializable,然后按Alt+Enter 快捷键  ,add就OK)

(快捷键不一样的话,那你鼠标对着波浪线,用自己的快捷键就好)

猜你喜欢

转载自blog.csdn.net/qq_35387940/article/details/83577530
今日推荐