当前位置: 首页 > 面试题库 >

如何计算serialversionuid

孔冥夜
2023-03-14
问题内容

当我在实现Serializable接口的Eclipse中创建Java类时,收到警告

可序列化的类ABCD没有声明类型为long的静态最终serialVersionUID字段

因此,当我单击警告时,我在Eclipse中获得了一个选项

添加生成的序列号ID

选择该选项后,Eclipse会自动serialVersionUID为我创建一个变量

现在我想知道该数字是在什么基础上生成的。这是一个随机数吗?我可以提供自己的随机数吗?


问题答案:

它是根据您的类的结构(字段,方法等)计算的。在对象序列化规范中进行了指定-
有关确切格式,请参见本节。

规范描述了在没有提供任何值的情况下会发生什么,但是自动生成使用相同的算法。

流中的项目顺序如下:

  • 类名。
  • 类修饰符写为32位整数。
  • 每个接口的名称按名称排序。
  • 对于按字段名称排序的类的每个字段(私有静态字段和私有瞬态字段除外:字段名称。字段的修饰符以32位整数形式编写。字段的描述符。
    * 如果存在类初始值设定项,则写出以下内容:
    方法的名称。方法的修饰符java.lang.reflect.Modifier.STATIC,用32位整数表示。方法的描述符()V。
  • 对于按方法名称和签名排序的每个非私有构造函数方法名称。方法的修饰符,写为32位整数。*方法的描述符。
  • 对于按方法名称和签名排序的每个非私有方法:方法名称。方法的修饰符,写为32位整数。*方法的描述符。



 类似资料:
  • 我想知道如何计算的累计总和在AnyLogic中。具体地说,我有一个循环事件,每周改变一个参数的值。从这个参数我想计算它收到的值的累计总和,我怎么做呢? 该事件是循环模式的超时。操作是: "name_parameter"=圆形(max(正常(10,200),0));

  • 问题内容: 该方法在Java中返回什么值? 我读到它是一个对象的内存引用…的哈希值是1;的哈希值是97。 我很困惑:是ASCII还是什么类型的值? 问题答案: 哈希码是一个整数值,表示被调用的对象的状态。这就是为什么将设置为1的an 返回哈希码“ 1”的原因,因为哈希码及其值是相同的。字符的哈希码等于其ASCII字符码。如果编写自定义类型,则负责创建一个最佳实现,该实现将最能代表当前实例的状态。

  • 问题内容: 如果用户输入为2255,而我的输出应为10分钟,那么我如何计算24小时内的时差。我的想法是将输入分为2个部分,2位数字和2位数字。前2位数字是小时,将其乘以60使其变为分钟。然后再加上第二个2位数字,然后计算出差异。我不想使用任何日期日历数据类型或API来解决它。谢谢 问题答案: 如何在不使用String chartAt的情况下获取前两位数字。 最高两位数:数字/ 100最低两位数:数

  • 问题内容: 这是我的JSON: 如何计算其中的对象数量? 问题答案: 那是一个数组。 您可以解析它(),然后使用该属性。

  • 我有一个Spring项目,它使用sping-oaust2和sping-Security使用LDAP身份验证提供程序进行身份验证。 在控制器中,我可以使用< code > @ AuthenticationPrincipal 注释访问当前主体的< code>UserDetails。 然而,当我使用client_credential令牌到达endpoint时,是一个,它是OAuth客户端id。sprin

  • 我有这个代码: 我必须用glFrustum替换glOrtho函数并得到相同的结果。 我阅读了khronos上的opengl指南,理解了glOrtho和glFrustum之间的区别,但我不知道如何计算参数。 如何计算传递给glFrustum函数的参数?