在Java中实现Serializable
接口(interface)时,需要设置serialVersionUID
长
选择默认长整型还是自动生成长整型有什么区别吗?
什么时候应该优先选择一个?
如果选择了auto generated long,如果改变了是否应该在事件类中改变?换句话说,分配给 serialVersionUID 的值......是否与类的当前结构以及在那里声明的字段和方法有关?
private static final long serialVersionUID = 1L;
private static final long serialVersionUID = 6749067740891125834L;
最佳答案
默认和自动生成的 long 之间的主要区别是自动生成的串行版本 UID 是基于对象的字段。如果您保留了没有版本 ID 的对象副本,则使用生成的版本可以帮助确保与已保留的对象的兼容性。因此,我倾向于使用生成的版本。在任何一种情况下,如果进行了不兼容的更改,您都需要更新版本 ID。
http://docs.oracle.com/javase/1.5.0/docs/guide/serialization/spec/version.html 5.6.1 和 5.6.2 部分描述了哪些更改是兼容的,哪些更改会破坏序列化。
关于java - 关于 Java 的 Serializable,需要澄清,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11322086/