原创 Idea 自动生成 SerialVersionUID

serialVersionUID 是个啥?

简单来说,Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的。
在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常,即InvalidCastException。

序列化过程

序列化操作的时候系统会把当前类的serialVersionUID写入到序列化文件中,当反序列化时系统会去检测文件中的serialVersionUID,判断它是否与当前类的serialVersionUID一致,如果一致就说明序列化类的版本与当前类版本是一样的,可以反序列化成功,否则失败。

serialVersionUID有两种显示的生成方式:

一是默认的1L,比如:private static final long serialVersionUID = 1L;

二是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段,比如:
private static final long serialVersionUID = xxxxL;


问题:新安装的idea工具,在没有设置之前,实现了Seriabilizable接口的类无法通过Alt Enter来自动生成serialVersionUID。

如何设置?

设置如下:File —> Settings —> Editor —> Inspections —>java(IDEA2017中有java目录) —> Serialization issues,在该项下找到“Serializable class without ‘serialVersionUID’ ”并勾选,顺序点击右下方 :Apply —> OK即可,如下图:

image

如何使用?

1 . 首先实现 Seriabilizable 接口,idea会有如下高亮提示

image

2 . 选中类名 同时按下 ALT + ENTER 看到如下界面 选择 Add 'SerialVersionUID'
image

3 . 就会自动生成 SerialVersionUID 了
image


  下一篇:  这是最后一篇了,亲
本文为 Laysonx 原创 文章,转载无需和我联系,但请注明来自 李鑫的杂货铺 或 李鑫博客