3 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
一般不會(huì)有問題,即使有序列化的情況下一般也不會(huì)有問題。所有類用一個(gè)值一般也沒什么問題的,他是區(qū)分同一個(gè)類的不同版本,在序列化和反序列化的時(shí)候會(huì)用到

TA貢獻(xiàn)3593條經(jīng)驗(yàn) 獲得超1個(gè)贊

TA貢獻(xiàn)1795條經(jīng)驗(yàn) 獲得超7個(gè)贊
實(shí)現(xiàn)java.io.Serializable這個(gè)接口是為序列化,serialVersionUID 用來表明實(shí)現(xiàn)序列化類的不同版本間的兼容性。如果你修改了此類, 要修改此值。否則以前用老版本的類序列化的類恢復(fù)時(shí)會(huì)出錯(cuò)。
這樣,即使某個(gè)類在與之對(duì)應(yīng)的對(duì)象已經(jīng)序列化出去后做了修改,該對(duì)象依然可以被正確反序列化。否則,如果不顯式定義該屬性,這個(gè)屬性值將由JVM根據(jù)類的相關(guān)信息計(jì)算,而修改后的類的計(jì)算結(jié)果與修改前的類的計(jì)算結(jié)果往往不同,從而造成對(duì)象的反序列化因?yàn)轭惏姹静患嫒荻 ?/p>
不顯式定義這個(gè)屬性值的另一個(gè)壞處是,不利于程序在不同的JVM之間的移植。因?yàn)椴煌木幾g器實(shí)現(xiàn)該屬性值的計(jì)算策略可能不同,從而造成雖然類沒有改變,但是因?yàn)镴VM不同,出現(xiàn)因類版本不兼容而無法正確反序列化的現(xiàn)象出現(xiàn)

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超10個(gè)贊
沒有設(shè)置serialVersionUID,因?yàn)樾薷暮蠓葱蛄谢玫降念悾c修改前不一致,而缺乏序列化,導(dǎo)致失敗。
設(shè)置serialVersionUID后,它就會(huì)將不一樣的field以type的預(yù)設(shè)值Deserialize.這個(gè)可以避開不兼容性的問題

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊
問題大了。。。。。。。建議用隨機(jī)值,而且每個(gè)類隨機(jī)生成一次后,以后改類了也不要改這個(gè)值。這個(gè)涉及到序列化的一些問題,如果沒有這個(gè)值,那更是要不得的。所有類都用同一個(gè)值也有問題哈。
- 3 回答
- 0 關(guān)注
- 16801 瀏覽
添加回答
舉報(bào)