亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java序列化不同JVM版本問題,怎么解決

java序列化不同JVM版本問題,怎么解決

JVM
楊魅力 2018-11-26 13:00:40
java序列化不同JVM版本問題,怎么解決
查看完整描述

1 回答

?
溫溫醬

TA貢獻1752條經驗 獲得超4個贊

簡單來說,Java的序列化機制是通過在運行時判斷類的serialVersionUID來驗證版本一致性的。在進行反序列化時,JVM會把傳來的字節流中的serialVersionUID與本地相應實體(類)的serialVersionUID進行比較,如果相同就認為是一致的,可以進行反序列化,否則就會出現序列化版本不一致的異常。

當實現java.io.Serializable接口的實體(類)沒有顯式地定義一個名為serialVersionUID,類型為long的變量時,Java序列化機制會根據編譯的class自動生成一個serialVersionUID作序列化版本比較用,這種情況下,只有同一次編譯生成的class才會生成相同的serialVersionUID 。

如果我們不希望通過編譯來強制劃分軟件版本,即實現序列化接口的實體能夠兼容先前版本,未作更改的類,就需要顯式地定義一個名為serialVersionUID,類型為long的變量,不修改這個變量值的序列化實體都可以相互進行串行化和反串行化。

serialVersionUID主要來判斷不同版本的兼容性。
當在反序列化的時候,字節流中的版本號,就和serialVersionUID區比較,而生成它的對象。
如果你沒有設置,java序列化機制,也自動會給你分配一個。

查看完整回答
反對 回復 2018-12-20
  • 1 回答
  • 0 關注
  • 1283 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號