小結一下:
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