serialVersionUID的作用及生成方法

小結一下:

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
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章