当我在 Eclipse 中创建 Java 类时,它实现了Serializable
界面,我收到警告
可序列化类 ABCD 未声明静态final
long 类型的serialVersionUID 字段
因此,当我单击警告时,我会在 Eclipse 中看到一个选项
添加生成的序列号版本 ID
一旦我选择了该选项,Eclipse 就会自动创建一个serialVersionUID
对我来说是变量。
现在我想知道这个数字是根据什么生成的。它是任意随机数吗?我可以提供自己的随机数吗?
它是根据类的结构(字段、方法等)计算的。它在对象序列化规范 - 请参阅本节以获得确切的格式。
该规范描述了未提供任何值时发生的情况,但自动生成使用相同的算法。
流中的项目顺序如下:
- 班级名称。
- 类修饰符写为 32 位整数。
- 每个接口的名称按名称排序。
- For each field of the class sorted by field name (except private static and private transient fields:
- 字段的名称。
- 字段的修饰符写为 32 位整数。
- 描述符
领域的。
- If a class initializer exists, write out the following:
- 方法的名称,.
- 该方法的修饰符 java.lang.reflect.Modifier.STATIC,写为 32 位整数。
- 该方法的描述符 ()V。
- For each non-private constructor sorted by method name and signature:
- 方法的名称,.
- 该方法的修饰符写为 32 位整数。
- 方法的描述符。
- For each non-private method sorted by method name and signature:
- 方法的名称。
- 该方法的修饰符写为 32 位整数。
- 方法的描述符。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)