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