【发布时间】:2011-04-05 08:19:54
【问题描述】:
如果我将一个类定义为 Serialiable,那么当我创建一个子类时,它会要求我定义一个 serialVersionUID。这是必要的还是我可以依赖超类中的那个?
【问题讨论】:
标签: java android serialization
如果我将一个类定义为 Serialiable,那么当我创建一个子类时,它会要求我定义一个 serialVersionUID。这是必要的还是我可以依赖超类中的那个?
【问题讨论】:
标签: java android serialization
我曾经在单独(可能是顶级)中声明一次 SerialVersionUID,例如:
public static final long GlobalSerialVersionUID=0L;
然后在每个Serializable 类中声明:
private static final long serialVersionUID = MyTopClass.GlobalSerialVersionUID;
这种方法将保证您始终拥有相同的 SerialVersionUID,并且如果您要实现不同序列化版本之间的数据交换 - 您可以在不同序列化版本之间分支代码。
【讨论】:
如果您更改类的实现,但仍希望能够序列化/反序列化以“旧”格式保存的对象,则使用 SerialVersionUID。所以这意味着如果你想改变子类而不是超类,你也必须在子类中实现它。但是,如果您不需要这种“版本控制”,则根本不必使用 SerialVersionUID。
【讨论】: