编辑:随机我指的是一个大的计算数字,对我们来说没有语义含义作为开发人员
实现Serializable接口时,最佳做法是指定串行版UID非常重要。在很多地方,我经常看到使用随机数字。 E.g。
Effective Java(第2版)第312页:
private static final long serialVersionUID = 234098243823485285L;
来自Java 6中的String类:
private static final long serialVersionUID = -6849794470754667710L;
来自Java 6中的ArrayList类:
private static final long serialVersionUID = 8683452581122892189L;
等。甚至eclipse提供了生成这些随机数的选项(尽管主要默认似乎是生成1L
的serialVersionUID)
为什么要使用随机数?从1L开始并且当它像任何合理的版本控制一样变化时增加到2L是不是更有意义?我唯一能想到使用看似随机的数字的方法是,如果您没有指定serialVersionUID,并且现在想要这样做(这会将您绑定到运行时自动生成的版本以提供向后兼容性支持)。
答案 0 :(得分:10)
这些“随机”数字可能是根据Java Object Serialization Specification自动以“当前”形式为类生成 的数字...其中“当前”是“当时serialVersionUID
的当前首次宣布为”。
这将允许先前已序列化的数据仍然反序列化 - 同时向前推进更明确的声明,以便在将来中断更改。
答案 1 :(得分:3)
它们几乎肯定是不是随机数,而是serialver
工具的输出。