如果我在超类中有默认的serialVersionUID
,那么子类会继承serialVersionUID
吗?类似于超类是可序列化的,那么子类也是可序列化的。
我最初有一个没有默认serialVersionUID
的超类,所以我得到了:
local class incompatible: stream classdesc serialVersionUID = -3473908186986930430,
local class serialVersionUID = -7527159820765531130
所以我把它添加到了超类:
private static final long serialVersionUID = 1L;
我的问题是:序列化是否在序列化子类时考虑来自超类的serialVersionUID
。我是否需要在每个子类中明确指定serialVersionUID
?
答案 0 :(得分:9)
如果我在超类中有默认的serialVersionUID,那么serialVersionUID是否由子类继承?
是的,它是继承的,但不,序列化不会将其视为属于子类而不使用它。
类似于超类是可序列化的,那么子类也是可序列化的。
它不相似。 Serializable
是一个界面,它只受语言规则的约束。 serialVersionUID
是一个特殊字段,其ObjectInputStream.