我是否需要将serialVersionUID
放在Serializable
班的祖先身上?或者仅在Serializable
班级本身?
答案 0 :(得分:3)
您根本不需要输入serialVersionUID。
Java将根据字段,方法等自动为您的类确定适当的序列ID。
拥有serialVersionUIDs的唯一合适时间是将对象存储到文件中,并且需要稍后加载它们,即使在更改了代码之后也是如此。
或者,如果您要在使用不同版本库的组件之间通过网络传输数据。
90%的人需要序列化,这是实时的,双方的库版本匹配得到保证。在这些情况下,如果您有两个不兼容但未更改sID的库版本,则不需要设置serialVersionUID,它实际上可能会导致问题。你会开始得到奇怪的错误,因为Java认为它们是串行兼容的,实际上,它们不是。
同样看看这些问题:
Is there a reason to use a real serialVersionUID?
Why generate long serialVersionUID instead of a simple 1L?
What is a serialVersionUID and why should I use it?
编辑添加:
至于原来的问题,不需要担心你的祖先。只是serialVersionUID会告诉Java它是否兼容。
但是,如果祖先发生了变化,并且你的serialVersionUID没有改变,即使你说它也可能不兼容。你不应该设置它的另一个原因。