91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中SerialVersionUID的作用是什么

發布時間:2021-06-15 11:02:07 來源:億速云 閱讀:311 作者:Leah 欄目:編程語言

今天就跟大家聊聊有關Java中SerialVersionUID的作用是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

1.serialVersionUID概念介紹

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

2.serialVersionUID的生成方式

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

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

比如:

private static final long serialVersionUID = 3959055215634785113L;

3.serialVersionUID原理

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

4、serialVersionUID作用

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

5、serialVersionUID注意事項

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

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

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

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

看完上述內容,你們對Java中SerialVersionUID的作用是什么有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

钦州市| 峡江县| 德江县| 新和县| 富顺县| 安多县| 蒙山县| 泸西县| 宁远县| 文昌市| 临夏县| 沈阳市| 连南| 沅江市| 铁岭县| 曲麻莱县| 凤台县| 山东| 达拉特旗| 东乡族自治县| 梧州市| 礼泉县| 布尔津县| 新河县| 宣化县| 土默特右旗| 淮阳县| 什邡市| 卢氏县| 南昌市| 大庆市| 象山县| 库尔勒市| 屏边| 六枝特区| 揭西县| 仁寿县| 大丰市| 霍林郭勒市| 平泉县| 安福县|