如何确定正确的序列版本ID?它应该是使用某些生成器或任何整数的任何大的长值吗?
答案 0 :(得分:5)
坦率地说,只要serialVersionUID
在你班级的不同版本之间有所不同,那就非常重要。
如果同一个类的两个版本具有不同的可序列化字段具有相同的serialVersionUID
,则会有什么不好 - 这可能会导致执行序列化时出现问题。
此外,如果对类的更改不会影响序列化(例如,类中的可序列化字段保持不变),则serialVersionUID
可以保持不变。
Serializable
的类生成ID,因此这可能是生成唯一ID的最简单路径。
有关该主题的进一步阅读,Discover the secrets of the Java Serialization API将是一个很好的阅读。有一个名为“版本控制”的部分讨论了serialVersionUID
问题。
答案 1 :(得分:2)
可能的用途:
200906121213
。答案 2 :(得分:1)
serialver工具附带Sun的Java开发工具包(JDK)。它在命令行上使用完整的类名并返回该编译类的串行版本ID,或者可以使用“-show”参数运行以启动小型交互式GUI。
因此,如果您的班级是Foo,请运行
serialver Foo
你会得到这样的输出:
Foo:static final long serialVersionUID = -6618469841127325812L;
以“static”开头的代码,并将其与其他静态变量一起放在您的类中。现在,串行版本ID已锁定在类中。
答案 3 :(得分:1)
启动命令提示符
键入以下内容:
cd \
然后在
下面输入[serialver] [space] -classpath [space] [类文件的路径] [space] [类文件名]
e.g。
serialver -classpath C:\ Users \ nileshjadav \ Documents \ java \ file_io ByteStreamDemo
请不要添加简单地使用ByteStreamDemo.java或ByteStreamDemo.class这样的扩展名,只需使用ByteStreamDemo
答案 4 :(得分:-1)
在使用java serialver实用程序生成serialVersionUID之前,需要注意几件事。
JDK路径,直到在环境变量中设置bin。另外,你可能会得到“'serialver'不被认为是内部或外部命令”。
添加类文件所在的类路径,或者转到类文件所在的目录。
运行serialver ..这将为您提供SerialID。
传递给此实用程序的类名称不包括.class扩展名。