serialVersionUID的值是否重要?

问题描述:

我正在使用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。 –

我的问题是,这真的很重要,我们初始化为serialVersionUID的值或无关紧要。

没有,不要紧,除非您现在已有序列化(例如文件)你加入这个成员之前被做了。在这种情况下,当在.class文件上运行时,必须使用serialver实用程序输出的值,就像在进行这些序列化时一样。

如果你的对象状态不会被序列化,那么它无关紧要,否则每次修改类结构(你都可以使用eclipse默认的UID生成策略)时,你将不得不生成serialVersionUID。

+0

不,你不会。你永远不应该改变'serialVersionUID.' – EJP

+0

EJP。你的意思是说,即使我的班级结构发生变化,我应该继续使用相同的serializeversionuid? –