POJO类中串行版本ID的唯一性

时间:2014-05-06 12:22:28

标签: java eclipse pojo serializable serialversionuid

另一个愚蠢的问题。 但是想问一下,因为它从最近1个小时开始旋转。

我们都知道serialVersionUID是唯一的。什么是独特性? 它应该在项目或工作区或服务器中是唯一的吗?

如果同一工作区中的两个类具有相同的serialVersionUID(复制粘贴),是否会导致IllegalClassCasteException或任何其他异常?

如果每个项目/工作区的唯一性,那么为什么Eclipse提供默认的serialVersionUID(1L)?

2 个答案:

答案 0 :(得分:2)

  

我们都知道serialVersionUID是唯一的

没有。它根本不是唯一的。如果需要,所有类都可以使用相同的serialVersionUid。

给定类的两个版本(如果它们在序列化方面兼容)应该具有相同的serialVersionUid。如果Java没有相同的serialVersionUid,Java会认为它们是不兼容的,即使这两个版本之间的更改实际上并没有破坏它们的兼容性。

如果一个类的两个版本在序列化方面不兼容,那么通过更改serialVersionUid来明白这一点是个好主意。

您似乎甚至不知道serialVersionUid是什么。如果是这种情况,那么我建议不要将任何serialVersionUid添加到任何类中,并让JVM自己解决它。

答案 1 :(得分:2)

serialVersionId将帮助对象序列化和传输并在其他一些环境中运行,主要是其他jvm然后serialVersionId将解除分区并检查它是否与环境竞争。所以只要你有相同的jvm你就不必担心。这就是为什么eclipse提供1L