为什么对串行版本 UID 使用随机数?
2022-09-04 20:41:30
编辑:随机的意思是一个大的计算数字,对我们作为开发人员没有语义意义
实现可序列化接口时,其最佳实践对于指定串行版本 UID 非常重要。在许多地方,我经常看到使用随机数。例如:
有效的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;
等。Even eclipse提供了生成这些随机数的选项(尽管主要的默认值似乎是生成一个串行VersionUID1L
)
为什么使用随机数?从1L开始,当它像任何合理的版本控制一样发生变化时,增加到2L不是更有意义吗?我能想到的唯一一次使用看似随机的数字是,如果你没有指定一个 serialVersionUID,并且现在想要这样做(这会将你绑定到运行时自动生成的版本,以提供向后兼容性支持)。