【问题标题】:The serializable class Employee does not declare a static final serialVersionUID field of type long可序列化类 Employee 没有声明 long 类型的静态最终 serialVersionUID 字段
【发布时间】:2014-01-24 05:58:39
【问题描述】:

在我的 Eclipse 中,我尝试了关于序列化的示例,但遇到了以下警告

我知道什么是serialVersionUID 以及它在序列化中的意义。我有以下关于此警告的问题

  1. IDE 如何分配默认值。是否在 IDE 中硬编码?
  2. 当它说生成 id 时,使用哪些参数来生成新 id?
  3. 不确定第三个选项是什么。说了一些关于抑制注释的事情。这是否意味着根本没有分配 id。那么在序列化中使用什么?

【问题讨论】:

  • 建议:由于前两个问题完全是关于Eclipse,所以将其添加为标签。
  • 在我看来,选项23基本上serialVersionUID 本身而言是相同的:编译时不会收到警告-时间,Java 将在运行时为您生成一个 ID。
  • 显然不是。选项 2 将生成serialVersionUID,该UID 将保持不变并在之后使用。即使稍后修改类,此值相同也不会影响序列化/反序列化过程。而第三个选项将在运行时给出一个值,如果稍后修改类,则该值会有所不同。

标签: java eclipse serialization serialversionuid


【解决方案1】:

IDE 如何分配默认值。它是在 IDE 中硬编码的吗?

是的,默认是硬编码值,即1L

当它说生成 id 时,使用哪些参数来生成新 id?

通常应该使用方法字段和方法签名来确定它,因为您专门询问 eclipse,不确定它,有一个 serialver 实用程序,它只是为您的类提供 serialVersionUID

$serialver A
serialver A:    static final long serialVersionUID = -609421954100196333L;

不确定第三个选项是什么。说了一些关于抑制注释的事情。这是否意味着根本没有分配 id。那么在序列化中使用什么?

它说,通过添加 @SuppressWarning 注释来指示 Java 编译器不要抱怨这种特殊的警告


另见

【讨论】:

    猜你喜欢
    • 2014-05-05
    • 1970-01-01
    • 2013-08-29
    • 2013-02-09
    • 2010-12-03
    • 2011-01-18
    • 2013-01-26
    • 1970-01-01
    • 2017-07-15
    相关资源
    最近更新 更多