小结一下:
1 值的作用:
用于判断序列化文件是否已经失效(过期)。
序列化的时候会把这个ID写到文件里。
读的时候会把这个ID和代码里的ID比较,如果不一致,表示文件里的已经失效。(will result in an InvalidClassException
.)
2 值写为多少:
你可以写为1L,也可以让ECLIPSE帮你生成一个。
3 不写会有什么问题?
不写的话,序列话的时候,JVM会帮你动态的生成一个。这个动态生成的算法可能在不同的虚拟机里不一样,也就是不同的环境下生成的可能不同。这就会有一个问题,你序列化产生的文件,别人读的时候会 InvalidClassException。
所以为了避免这个问题,这个值要写!
参看:
Understand the serialVersionUID
http://www.mkyong.com/java-best-practices/understand-the-serialversionuid/
Java : How to generate serialVersionUID
http://www.mkyong.com/java/how-to-generate-serialversionuid/
https://docs.oracle.com/javase/1.5.0/docs/api/java/io/Serializable.html