可序列化类GuiLote不声明long类型的静态最终serialVersionUID字段

时间:2014-03-26 17:58:44

标签: java class serialization warnings

我想序列化一个Java类,因为警告:The serializable class GuiLote does not declare a static final serialVersionUID field of type long。 Eclipse建议使用以下两个选项: 添加默认的序列版本ID 添加生成的序列版本ID 。他们之间有什么区别? Eclipse为默认串行版本ID:

添加此项
/**
 * 
 */
private static final long serialVersionUID = 1L;

或者为生成的序列版本ID添加此内容:

/**
 * 
 */
private static final long serialVersionUID = 8534363180966005148L;

这是我的代码:

  

public class GuiLote extends JInternalFrame implements ActionListener { ... }

1 个答案:

答案 0 :(得分:0)

串行版本ID用于确定对象的序列化版本(来自磁盘,网络等)是否可以反序列化到当前应用程序中。如果ID-s匹配,则对象被反序列化,否则抛出异常。基本上默认意味着它被设置为1,生成将计算考虑到类中所有字段的唯一数字。

如果对象的旧表示被反序列化,并且旧版本中没有新字段,则这些字段将显示为null。因此,您可以选择快速失败并拒绝反序列化,如果版本不匹配或使用空值并保持与序列化数据的向后兼容性。