我想序列化一个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 { ... }
答案 0 :(得分:0)
串行版本ID用于确定对象的序列化版本(来自磁盘,网络等)是否可以反序列化到当前应用程序中。如果ID-s匹配,则对象被反序列化,否则抛出异常。基本上默认意味着它被设置为1,生成将计算考虑到类中所有字段的唯一数字。
如果对象的旧表示被反序列化,并且旧版本中没有新字段,则这些字段将显示为null。因此,您可以选择快速失败并拒绝反序列化,如果版本不匹配或使用空值并保持与序列化数据的向后兼容性。