(一些對象的狀態(tài)需要保存到磁盤或數據庫中時,需要實現Serializable接口)
結論:在實現Serializable接口時,IDE一般會提醒你設置一個SerialVersionID,這樣做的好處是方便在不同編譯器之間代碼的移植。編譯器在讀取Serial對象時,會比較source與target的SerialVersionID是否一致,如果一致會產生InvalidClassException。
在Eclipse中忽略該情況操作方法:Window-->Preferences-->Java-->Compiler-->Errors/Warnings-->Potential programming problems
問題:SerialVersionID是否在不同的類中有不同的值?
回答:不需要。因為SerialVersionID本身是static final,是全局的,而且一般都是針對當前類,所以一般都是private。編譯器在DeSerializable的時候,對象都是當前類,不需要不同類設置不同值。
問題:不顯示聲明SerialVersionID是錯的嗎?
回答:不是。編譯器有自己的生成SerialVersionID的規(guī)則,但是不同編譯器的規(guī)則又是不一致的,這樣就會造成已Serial對象SerialVersionID與當前編譯器DeSerial出來的SerialVersionID不一致,產生Exception。盡可能將所有可以序列化類都顯示聲明SerialVersionID。