日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Java技術(shù):SerialVersionUID作用介紹

1.serialVersionUID概念介紹

英文翻譯的意思是序列化版本號。凡是實現(xiàn)Serializable接口的類都會有一個表示序列化版本標(biāo)識符的靜態(tài)變量。

成都創(chuàng)新互聯(lián)公司成都網(wǎng)站建設(shè)按需定制網(wǎng)站,是成都網(wǎng)站營銷公司,為成都玻璃鋼雕塑提供網(wǎng)站建設(shè)服務(wù),有成熟的網(wǎng)站定制合作流程,提供網(wǎng)站定制設(shè)計服務(wù):原型圖制作、網(wǎng)站創(chuàng)意設(shè)計、前端HTML5制作、后臺程序開發(fā)等。成都網(wǎng)站設(shè)計熱線:18982081108

2.serialVersionUID的生成方式

默認(rèn)的1L:比如:private static final long serialVersionUID = 1L; 。

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

比如:

private static final long serialVersionUID = 3959055215634785113L;

3.serialVersionUID原理

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

4、serialVersionUID作用

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

5、serialVersionUID注意事項

  • 當(dāng)實現(xiàn)java.io.Serializable接口的實體(類)沒有顯式地定義一個名為serialVersionUID,類型為long的變量時,Java序列化機制會根據(jù)編譯的class自動生成一個serialVersionUID作序列化版本比較用,這種情況下,只有同一次編譯生成的class才會生成相同的serialVersionUID 。如果我們不希望通過編譯來強制劃分軟件版本,即實現(xiàn)序列化接口的實體能夠兼容先前版本中未作更改的類,就需要顯式地定義一個名為serialVersionUID,類型為long的變量,不修改這個變量值的序列化實體都可以相互進(jìn)行串行化和反串行化。
  • 記住應(yīng)該總是在可序列化的類中包含這個字段,即使是在第一個類版本中,以便提醒自己這個字段的重要性。不要在未來的版本中改變這個字段值,除非你有意要改變類使其與舊的序列化對象不兼容。
  • 如果你的類序列化到硬盤上面后,你更改了類別的field(增加或減少或改名),當(dāng)你反序列化時,就會出現(xiàn)異常的,這樣就會造成不兼容性的問題。但當(dāng)serialVersionUID相同時,它就會將不一樣的field以type的預(yù)設(shè)值Deserialize,這個可以避開不兼容性的問題。
  • 當(dāng)我們的系統(tǒng)不太經(jīng)常需要序列化類時,可以去掉這些警告,做如下設(shè)置:Window-->Preferences-->Java,將serializable class without serialVersionUID的設(shè)置由warning改為Ignore。然后Eclipse會重新編譯程序,那些警告信息也就消失了。但如果在開發(fā)大量需要序列化的類的時候,建議還原為原來的設(shè)置。這樣可以保證系統(tǒng)的性能和健壯。

本文轉(zhuǎn)載自微信公眾號「IT技術(shù)分享社區(qū)」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系IT技術(shù)分享社區(qū)公眾號。

原文鏈接:https://mp.weixin.qq.com/s/gNmgJcTULeFYFVrBRqkTYA


文章名稱:Java技術(shù):SerialVersionUID作用介紹
轉(zhuǎn)載源于:http://www.5511xx.com/article/dpcjgeo.html