序列化

2020-02-26

java的序列化機(jī)制是通過在運(yùn)行時(shí)判斷類的serialVersionUID來驗(yàn)證版本一致性的。在進(jìn)行反序列化時(shí),JVM會(huì)把傳來的字節(jié)流中的serialVersionUID與本地實(shí)體類中的serialVersionUID進(jìn)行比較,如果相同則認(rèn)為是一致的,便可以進(jìn)行反序列化,否則就會(huì)報(bào)序列化版本不一致的異常。

如何產(chǎn)生這個(gè)ID:
當(dāng)我們一個(gè)實(shí)體類中沒有顯示的定義一個(gè)名為“serialVersionUID”、類型為long的變量時(shí),Java序列化機(jī)制會(huì)根據(jù)編譯時(shí)的class自動(dòng)生成一個(gè)serialVersionUID作為序列化版本比較,這種情況下,只有同一次編譯生成的class才會(huì)生成相同的serialVersionUID。譬如,當(dāng)我們編寫一個(gè)類時(shí),隨著時(shí)間的推移,我們因?yàn)樾枨蟾膭?dòng),需要在本地類中添加其他的字段,這個(gè)時(shí)候再反序列化時(shí)便會(huì)出現(xiàn)serialVersionUID不一致,導(dǎo)致反序列化失敗。那么如何解決呢?便是在本地類中添加一個(gè)“serialVersionUID”變量,值保持不變,便可以進(jìn)行序列化和反序列化。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • JAVA序列化機(jī)制的深入研究 對(duì)象序列化的最主要的用處就是在傳遞,和保存對(duì)象(object)的時(shí)候,保證對(duì)象的完整...
    時(shí)待吾閱讀 11,224評(píng)論 0 24
  • 1、前言 《手冊(cè)》第 9 頁 “OOP 規(guī)約” 部分有一段關(guān)于序列化的約定 1: 【強(qiáng)制】當(dāng)序列化類新增屬性時(shí),請(qǐng)...
    sakura579閱讀 850評(píng)論 0 0
  • 關(guān)于Java序列化的文章早已是汗牛充棟了,本文是對(duì)我個(gè)人過往學(xué)習(xí),理解及應(yīng)用Java序列化的一個(gè)總結(jié)。此文內(nèi)容涉及...
    是什么樣的心情閱讀 930評(píng)論 0 0
  • 段子 公園里,一位仙風(fēng)鶴骨的老者在打太極,一招一式都仙氣十足,一個(gè)年輕人走過去:“大爺,太極這玩意兒花拳繡腿,你練...
    大公爵閱讀 18,174評(píng)論 4 41
  • 簡介 序列化 (Serialization)是將對(duì)象的狀態(tài)信息轉(zhuǎn)換為可以存儲(chǔ)或傳輸?shù)男问降倪^程。在序列化期間,對(duì)象...
    ooyao閱讀 1,029評(píng)論 0 0

友情鏈接更多精彩內(nèi)容