关于在Eclipse中生成的serialVersionUID

Tap*_*ose 11 java eclipse serialversionuid

有没有办法在Eclipse中串行生成serialVersionUID?通过串行我想要的意思是,如果一个可序列化的类具有serialVersionUID = 1L,那么当我生成另一个类的serialVersionUID时,这将是serialVersionUID = 2L.

如果我手动指定1L,2L,3L等,这会产生任何问题吗?

Eclipse提供了一个选项"选择添加生成的串行版本ID",这个选项可以安全选择吗?

Jac*_*ack 17

不,它不会在您的两种情况下产生任何问题:

  • 您可以逐步手动指定它
  • 你可以让Eclipse为它们分配随机生成的值
  • 你可以把它们全部1L用于不同的课程

串行UID的目的是禁止在不同版本中对相同类进行序列化和反序列化,尤其是在没有向前兼容性的情况下(例如,类的新版本不能通过先前的定义进行序列化/非序列化).

这种情况很少发生,尤其是在处理您自己的项目时,这些项目不是依赖序列化的大型框架的一部分.所以你可以放心地做任何你想做的事.

您希望为同一个类创建不同序列号的情况是您更新类时要禁止使用先前声明的SAME类对其进行序列化.

  • 那么`@SuppressWarnings("serial")怎么样?这将如何改变事情?推荐,不推荐?避免? (2认同)
  • @ADTC它可以工作,但受编译器不兼容性的影响.请参见Serializable接口.从Java 7开始:"如果可序列化类没有显式声明serialVersionUID,那么序列化运行时将根据类的各个方面计算该类的默认serialVersionUID值,如Java(TM)对象序列化规范中所述.但是,[...]可能因编译器实现而异,因此可能会导致意外的" (2认同)