java如果扩展了一个实现可序列化的类,为什么需要重新定义serialVersionUID?
对于我的一个项目,我需要定义一个扩展^{
从javadoc链接中,您可以看到以下异常:
- 扩展
IllegalArgumentException
,其中 - 扩展
RuntimeException
,其中 - 扩展
Exception
,其中 - 扩展
Throwable
李>
除了添加了private
修饰符的Throwable
之外,它们都定义了自己的static final serialVersionUID
现在,如果您实现了一个接口Foo,那么所有继承的类也实现了该接口,这也代表Serializable
;然而,为什么JDK中的子类会为每个子类重新定义它?不为继承类重新定义它有什么危险
# 1 楼答案
SerialVersionUID是一个静态长值,因此不会通过类层次结构继承它
您需要这样来指示类的先前序列化实例是否与当前实现的版本相同
有关详细信息,请参见此处:
What is a serialVersionUID and why should I use it?