Java中序列化的serialVersionUID做用

做用:html

serialVersionUID 是用來在序列號運行時判斷類的serialVersionUID來驗證版本一致性的。在進行反序列化時,JVM會把傳來的字節流中的serialVersionUID與本地相應實體(類)的serialVersionUID進行比較,若是相同就認爲是一致的,能夠進行反序列化,不然就會出現序列化版本不一致的異常。java

 

沒定義時默認生成:ui

當實現java.io.Serializable接口的實體(類)沒有顯式地定義一個名爲serialVersionUID,類型爲long的變量時,Java序列化機制會根據編譯的class(它經過類名,方法名等諸多因素通過計算而得,理論上是一一映射的關係,也就是惟一的)自動生成一個serialVersionUID做序列化版本比較用,這種狀況下,若是class文件(類名,方法明等)沒有發生變化(增長空格,換行,增長註釋,等等),就算再編譯屢次,serialVersionUID也不會變化的..net

 

顯式定義的做用:htm

若是咱們不但願經過編譯來強制劃分軟件版本,即實現序列化接口的實體可以兼容先前版本,未做更改的類,就須要顯式地定義一個名爲serialVersionUID,類型爲long的變量,不修改這個變量值的序列化實體均可以相互進行串行化和反串行化。不一樣的成員變量會用默認值代替。blog

 

http://www.cnblogs.com/guanghuiqq/archive/2012/07/18/2597036.html接口

http://blog.csdn.net/z69183787/article/details/46834423io

相關文章
相關標籤/搜索