有没有什么方法可以在Eclipse中串行生成serialVersionUID?串行我想表示,如果一个可序列化的类有serialVersionUID = 1L,那么当我生成另一个类的serialVersionUID时,这将是serialVersionUID = 2L。关于在Eclipse中生成的serialVersionUID
如果我手动指定1L,2L,3L等,这会产生什么问题吗?
Eclipse给出了一个选项来选择“添加生成的序列版本ID”,这个选项是否安全可以选择?
有没有什么方法可以在Eclipse中串行生成serialVersionUID?串行我想表示,如果一个可序列化的类有serialVersionUID = 1L,那么当我生成另一个类的serialVersionUID时,这将是serialVersionUID = 2L。关于在Eclipse中生成的serialVersionUID
如果我手动指定1L,2L,3L等,这会产生什么问题吗?
Eclipse给出了一个选项来选择“添加生成的序列版本ID”,这个选项是否安全可以选择?
不,它不会在你的任何两种情况造成任何问题:
1L
不同类别串行UID的目的是禁止的序列化和反序列化相同的类在不同版本中,特别是当没有向前兼容性(例如,新版本的类不能被先前定义序列化/反序列化)。
这是一种很少发生的情况,特别是在处理自己的项目时,这些项目不依赖于序列化的大型框架。所以你可以安全地做任何你想要的。
您希望为同一个类使用不同序列的情况是当您更新某个类并且您希望禁止使用SAME类的先前声明对其进行序列化时。
的Java序列化支持的所有类具有相同的serialVersionUID
这是使用了版本控制,以使从旧的定义序列化对象的新版本
检查http://java.sun.com/developer/technicalArticles/Programming/serialization/的细节不兼容(滚动下调至“版本控制”)
让我回答你的问题:
添加生成的序列版本ID ...是否安全?答:是的
如果要手动指定1L,2L,3L是一个问题:没有比让他们更多的问题全部1或任何其他数目
生成序列ID顺序:答案是没有内置的机制来做到这一点。事实上,你问这个问题让我相信你不知道serialVersionUID是什么。即使你已经阅读过这些内容,你应该再读一遍。
感谢您的答案。是的,我知道为什么sserialVersionUID已被使用,但它是我的编程风格,在Eclipse中的项目中以串行方式生成它们。 –
你不应该这样做。我们的想法是通过观察对象序列化规范的对象版本控制部分中的规则,在类的进化过程中尽可能长时间地保持常量serialVersionUID
。
你的'编程风格'与它无关。这是将它用于其设计目的的问题。它不是为您使用它的目的而设计的。源代码控制系统可以为你做到这一点。
如果您希望自己的课程长时间有用,那么您应该只进行“兼容性更改”,所有这些都在此处@EJP提及的“对象序列化规范”中定义。 –
你为什么要*不同的类具有串行serialVersionUIDs? –
这是我的编程风格,以串行方式生成serialVersionUID。 –
这是跨单个课程版本的一种常见风格。你在多个班级的风格是否有益?当你以后想要编写一个特定的类时,你为什么设置该类的serialVersionUID,以及类之间的串行关系会发生什么? –