serialVersionUID 需要么?
老是的代碼里沒有加入private static final long serialVersionUID = 1L;這行么?我的環(huán)境,沒有這行會(huì)報(bào)錯(cuò)呢~
但是加上后運(yùn)行結(jié)束了,我又去掉這行serialVersionUID 。竟然又不出錯(cuò)了~什么鬼
老是的代碼里沒有加入private static final long serialVersionUID = 1L;這行么?我的環(huán)境,沒有這行會(huì)報(bào)錯(cuò)呢~
但是加上后運(yùn)行結(jié)束了,我又去掉這行serialVersionUID 。竟然又不出錯(cuò)了~什么鬼
2016-04-19
舉報(bào)
2016-04-19
????因?yàn)橹澳愕念愂菦]有被編譯過的(即沒有生成.class文件)。當(dāng)實(shí)現(xiàn)java.io.Serializable接口的實(shí)體(類)沒有顯式地定義一個(gè)名為serialVersionUID,類型為long的變量時(shí),Java序列化機(jī)制會(huì)根據(jù)編譯的class(它通過類名,方法名等諸多因素經(jīng)過計(jì)算而得,理論上是一一映射的關(guān)系,也就是唯一的)自動(dòng)生成一個(gè)serialVersionUID作序列化版本比較用,這種情況下,當(dāng)你運(yùn)行一次之后,class文件已經(jīng)產(chǎn)生了,如果class文件(類名,方法明等)沒有發(fā)生變化(增加空格,換行,增加注釋,等等),就算再編譯多次,serialVersionUID也不會(huì)變化的。。至于你未運(yùn)行之前沒添加UID就會(huì)報(bào)錯(cuò),可能是你軟件設(shè)置的原因。