2014-02-13 60 views
3

我正在使用java中的序列化類和這些類中,我需要指定serialVersionUID與一些​​長號碼進行初始化。 作爲默認它需要爲serialVersionUID的值是否重要?

private static final long serialVersionUID = 1L; 

否則我可以初始化與其他一些長的數字相同太像波紋管:

private static final long serialVersionUID = 5561040348988016571L; 

一些非常大的數字。

我的問題是:我們初始化serialVersionUID的值是否真的很重要?

+0

如果你問,那意味着你不知道serialVersionUID的用途是什麼。那麼爲什麼要使用它呢?你不需要爲你的課程設置一個可序列化的領域。閱讀http://blog.ninja-squad.com/2013/07/26/stop-with-serialVersionUID/(法文,但谷歌翻譯是你的朋友) –

+0

我的問題不是基本上爲什麼我們需要serialVersionUID,而是如果我們用1L和5561040348988016571L來初始化它,那麼這很重要嗎? – user2823355

+0

閱讀我給你的鏈接,你就會明白。我很驚訝你關心它應該有的價值,但不關心是否應該存在一個serialVersionUID。 –

回答

1

我的問題是,這真的很重要,我們初始化爲serialVersionUID的值或無關緊要。

沒有,不要緊,除非您現在已有序列化(例如文件)你加入這個成員之前被做了。在這種情況下,當在.class文件上運行時,必須使用serialver實用程序輸出的值,就像在進行這些序列化時一樣。

-1

如果你的對象狀態不會被序列化,那麼它無關緊要,否則每次修改類結構(你都可以使用eclipse默認的UID生成策略)時,你將不得不生成serialVersionUID。

+0

不,你不會。你永遠不應該改變'serialVersionUID.' – EJP

+0

EJP。你的意思是說,即使我的班級結構發生變化,我應該繼續使用相同的serializeversionuid? –