serialVersionUID的作用
详见这篇文档 http://lenjey.iteye.com/blog/513736
简单来说就是,在序列化对象时,编译器会自动给对象生成一个serialVersionUID,之后任意改动这个对象都会与编译器生成的UID不匹配。如果我们显示指定了serialVersionUID,那么对象序列化之后,也可以修改这个对象。
serialVersionUID生成
我们可以任意指定serialVersionUID,如
1 |
private static final long serialVersionUID = 1L; |
但最好还是使用让系统按照摘要算法生成一个指纹数字。eclipse是可以自动生成的,IDEA需要简单配置一下。
IntelliJ IDEA->Preferences->Inspections界面下
Serializable class without serialVersionUID后打钩,注意上面的Profile选为Default。
(继承了Serializable的类没有serialVersionUID就会Warning)
之后光标在继承了Serializable的类名上按 ALT+ENTER键,就会出现 Add serialVersionUID field 选项,生成的UID如下
1 |
private static final long serialVersionUID = 6496849704004740865L; |