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

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

serialVersionUID 全部設為1L 會有什么問題嗎?

serialVersionUID 全部設為1L 會有什么問題嗎?

明月笑刀無情 2018-07-14 09:40:13
很多地方都使用默認的:private static final long serialVersionUID = 1L; serialVersionUID都為1L,會不會有什么問題?以下是問題補充:類被修改后,沒有修改serialVersionUID的值,出錯? 不同的虛擬機,serialVersionUID的值不同,出錯? 能說說通俗點(好理解點)的原因嗎?
查看完整描述

3 回答

?
吃雞游戲

TA貢獻1829條經驗 獲得超7個贊

一般不會有問題,即使有序列化的情況下一般也不會有問題。所有類用一個值一般也沒什么問題的,他是區分同一個類的不同版本,在序列化和反序列化的時候會用到

查看完整回答
1 反對 回復 2018-07-14
?
一只萌萌小番薯

TA貢獻1795條經驗 獲得超7個贊

實現java.io.Serializable這個接口是為序列化,serialVersionUID 用來表明實現序列化類的不同版本間的兼容性。如果你修改了此類, 要修改此值。否則以前用老版本的類序列化的類恢復時會出錯。

這樣,即使某個類在與之對應的對象已經序列化出去后做了修改,該對象依然可以被正確反序列化。否則,如果不顯式定義該屬性,這個屬性值將由JVM根據類的相關信息計算,而修改后的類的計算結果與修改前的類的計算結果往往不同,從而造成對象的反序列化因為類版本不兼容而失敗。

不顯式定義這個屬性值的另一個壞處是,不利于程序在不同的JVM之間的移植。因為不同的編譯器實現該屬性值的計算策略可能不同,從而造成雖然類沒有改變,但是因為JVM不同,出現因類版本不兼容而無法正確反序列化的現象出現


查看完整回答
反對 回復 2018-07-14
?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

沒有設置serialVersionUID,因為修改后反序列化得到的類,與修改前不一致,而缺乏序列化,導致失敗。

設置serialVersionUID后,它就會將不一樣的field以type的預設值Deserialize.這個可以避開不兼容性的問題


查看完整回答
反對 回復 2018-07-14
?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

問題大了。。。。。。。建議用隨機值,而且每個類隨機生成一次后,以后改類了也不要改這個值。這個涉及到序列化的一些問題,如果沒有這個值,那更是要不得的。所有類都用同一個值也有問題哈。

查看完整回答
反對 回復 2018-07-14
  • 3 回答
  • 0 關注
  • 16767 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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