另一个愚蠢的问题。 但是想问一下,因为它从最近1个小时开始旋转。
我们都知道serialVersionUID是唯一的。什么是独特性? 它应该在项目或工作区或服务器中是唯一的吗?
如果同一工作区中的两个类具有相同的serialVersionUID(复制粘贴),是否会导致IllegalClassCasteException或任何其他异常?
如果每个项目/工作区的唯一性,那么为什么Eclipse提供默认的serialVersionUID(1L)?
答案 0 :(得分:2)
我们都知道serialVersionUID是唯一的
没有。它根本不是唯一的。如果需要,所有类都可以使用相同的serialVersionUid。
给定类的两个版本(如果它们在序列化方面兼容)应该具有相同的serialVersionUid。如果Java没有相同的serialVersionUid,Java会认为它们是不兼容的,即使这两个版本之间的更改实际上并没有破坏它们的兼容性。
如果一个类的两个版本在序列化方面不兼容,那么通过更改serialVersionUid来明白这一点是个好主意。
您似乎甚至不知道serialVersionUid是什么。如果是这种情况,那么我建议不要将任何serialVersionUid添加到任何类中,并让JVM自己解决它。
答案 1 :(得分:2)
serialVersionId
将帮助对象序列化和传输并在其他一些环境中运行,主要是其他jvm然后serialVersionId
将解除分区并检查它是否与环境竞争。所以只要你有相同的jvm你就不必担心。这就是为什么eclipse提供1L