Chr*_*ght 11 java serialization
编辑:随机我的意思是一个大的计算数字,对我们作为开发人员没有语义含义
实现Serializable接口时,最佳做法是指定串行版本UID非常重要.在很多地方,我经常看到使用随机数字.例如
Effective Java(第2版)第312页:
private static final long serialVersionUID = 234098243823485285L;
Run Code Online (Sandbox Code Playgroud)
从Java 6中的String类:
private static final long serialVersionUID = -6849794470754667710L;
Run Code Online (Sandbox Code Playgroud)
从Java 6中的ArrayList类:
private static final long serialVersionUID = 8683452581122892189L;
Run Code Online (Sandbox Code Playgroud)
甚至eclipse提供了生成这些随机数的选项(尽管主要的默认值似乎是生成serialVersionUID 1L)
为什么要使用随机数?从1L开始并且当它像任何合理的版本控制一样变化时增加到2L是不是更有意义?我唯一能想到使用看似随机的数字的方法是,如果您没有指定serialVersionUID,并且现在想要这样做(这会将您绑定到运行时自动生成的版本以提供向后兼容性支持).
Jon*_*eet 10
那些"随机"的数字可能是该数字会已为类在"当前"的形式按自动生成的Java对象序列化规范 ......其中"当前"是"的时候电流serialVersionUID首次宣布".
这将允许先前序列化的数据仍然被反序列化 - 同时向未来更明确地宣布突破性变化.
| 归档时间: |
|
| 查看次数: |
2281 次 |
| 最近记录: |