如果我在超类中有默认的serialVersionUID,则serialVersionUID是否由子类继承

时间:2014-05-05 05:47:27

标签: java serialization

如果我在超类中有默认的serialVersionUID,那么子类会继承serialVersionUID吗?类似于超类是可序列化的,那么子类也是可序列化的。

我最初有一个没有默认serialVersionUID的超类,所以我得到了:

local class incompatible: stream classdesc serialVersionUID = -3473908186986930430, 
local class serialVersionUID = -7527159820765531130

所以我把它添加到了超类:

private static final long serialVersionUID = 1L;

我的问题是:序列化是否在序列化子类时考虑来自超类的serialVersionUID。我是否需要在每个子类中明确指定serialVersionUID

1 个答案:

答案 0 :(得分:9)

  

如果我在超类中有默认的serialVersionUID,那么serialVersionUID是否由子类继承?

是的,它是继承的,但不,序列化不会将其视为属于子类而不使用它。

  

类似于超类是可序列化的,那么子类也是可序列化的。

它不相似。 Serializable是一个界面,它只受语言规则的约束。 serialVersionUID是一个特殊字段,其ObjectInputStream.

强制执行自己的规则