日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java技术:serialVersionUID作用介绍

發布時間:2023/12/10 java 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java技术:serialVersionUID作用介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ? ? ? ? ?

  • serialVersionUID概念介紹

  • 英文翻譯的意思是序列化版本號。凡是實現Serializable接口的類都會有一個表示序列化版本標識符的靜態變量。

  • serialVersionUID的生成方式

  • 默認的1L:比如:private static final long serialVersionUID = 1L;?。

    根據類名、接口名、成員方法及屬性等來生成一個64位的哈希字段:

    比如:???? ?

    private?static?final?long?serialVersionUID?=?3959055215634785113L;

  • serialVersionUID原理

  • 當定義一個實體類中如果沒有顯式的定義一個名為“serialVersionUID”、類型為long的變量時,Java序列化機制會根據編譯時的class自動生成一個serialVersionUID作為序列化版本比較,這種情況下,只有同一次編譯生成的class才會生成相同的serialVersionUID。比如,當我們編寫一個Java類時,隨著時間的推移,因為需求的改動,需要在該Java類中添加新的的字段,這個時候再反序列化時就會出現serialVersionUID不一致的情況,從而導致反序列化失敗。可以通過在本地Java類中添加一個“serialVersionUID”變量,值保持不變,便可以進行序列化和反序列化。如果Java類沒有顯示指定serialVersionUID,JVM會自動生成一個。

    4、serialVersionUID作用?

    序列化時為了保持版本的兼容性,即在版本升級時反序列化仍保持對象的唯一性。?

    5、serialVersionUID注意事項

    1.當實現java.io.Serializable接口的實體(類)沒有顯式地定義一個名為serialVersionUID,類型為long的變量時,Java序列化機制會根據編譯的class自動生成一個serialVersionUID作序列化版本比較用,這種情況下,只有同一次編譯生成的class才會生成相同的serialVersionUID 。如果我們不希望通過編譯來強制劃分軟件版本,即實現序列化接口的實體能夠兼容先前版本中未作更改的類,就需要顯式地定義一個名為serialVersionUID,類型為long的變量,不修改這個變量值的序列化實體都可以相互進行串行化和反串行化。?

    2.記住應該總是在可序列化的類中包含這個字段,即使是在第一個類版本中,以便提醒自己這個字段的重要性。不要在未來的版本中改變這個字段值,除非你有意要改變類使其與舊的序列化對象不兼容。

    3.如果你的類序列化到硬盤上面后,你更改了類別的field(增加或減少或改名),當你反序列化時,就會出現異常的,這樣就會造成不兼容性的問題。但當serialVersionUID相同時,它就會將不一樣的field以type的預設值Deserialize,這個可以避開不兼容性的問題。?

    4.當我們的系統不太經常需要序列化類時,可以去掉這些警告,做如下設置:Window-->Preferences-->Java,將serializable class without serialVersionUID的設置由warning改為Ignore。然后Eclipse會重新編譯程序,那些警告信息也就消失了。但如果在開發大量需要序列化的類的時候,建議還原為原來的設置。這樣可以保證系統的性能和健壯。

    IT技術分享社區

    個人博客網站:https://programmerblog.xyz

    文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠程辦公:常用的遠程協助軟件,你都知道嗎?51單片機程序下載、ISP及串口基礎知識硬件:斷路器、接觸器、繼電器基礎知識

    總結

    以上是生活随笔為你收集整理的Java技术:serialVersionUID作用介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。