有没有办法在 Eclipse 中串行生成 serialVersionUID?串行我的意思是,如果一个可序列化类的serialVersionUID = 1L,那么当我生成另一个类的serialVersionUID 时,这将是serialVersionUID = 2L。
如果我手动指定 1L、2L、3L 等,这会产生任何问题吗?
Eclipse 提供了一个选项来选择“添加生成的序列版本 ID”,这个选项可以安全选择吗?
有没有办法在 Eclipse 中串行生成 serialVersionUID?串行我的意思是,如果一个可序列化类的serialVersionUID = 1L,那么当我生成另一个类的serialVersionUID 时,这将是serialVersionUID = 2L。
如果我手动指定 1L、2L、3L 等,这会产生任何问题吗?
Eclipse 提供了一个选项来选择“添加生成的序列版本 ID”,这个选项可以安全选择吗?
不,它不会在您的两种情况下产生任何问题:
1L
用于不同的课程序列 UID 的目的是禁止在不同版本中对相同的类进行序列化和反序列化,尤其是在没有前向兼容性的情况下(例如,新版本的类不能通过以前的定义进行序列化/反序列化)。
这种情况很少发生,尤其是在处理您自己的项目时,这些项目不属于依赖序列化的大型框架的一部分。所以你可以安全地做任何你想做的事。
您希望同一类具有不同序列的情况是,当您正在更新一个类并且您希望使用 SAME 类的先前声明来禁止它的序列化时。
让我反过来回答你的问题:
添加生成的序列号版本号...安全吗?答案:是的
如果您手动指定 1L、2L、3L,那就是个问题:没有比将它们全部设为 1 或任何其他数字更多的问题
串行生成序列 ID:答案是没有内置机制来执行此操作。您问这个问题的事实使我相信您不知道 serialVersionUID 的用途。即使您已经阅读了它的作用,您也应该再次阅读它。
你根本不应该这样做。这个想法是serialVersionUID
通过遵守对象序列化规范的对象版本控制部分中的规则,在类的演变过程中尽可能长时间地保持常量。
你的“编程风格”与它无关。这是将事物用于其设计目的的问题。它不是为您使用它的目的而设计的。源代码控制系统可以为您做到这一点。
java序列化支持所有类都具有相同的serialVersionUID
这用于版本控制,以便旧定义的序列化对象与新版本不兼容
查看http://java.sun.com/developer/technicalArticles/Programming/serialization/了解详情(向下滚动到“版本控制”)