-3

我正在尝试通过以下类定义在 Java 中扩展 LinkdList:

public class Roster extends LinkedList<Teammate>{

}

但我这样做会收到以下警告:

The serializable class Roster does not declare a static final serialVersionUID field of type long

这是什么意思,我该如何删除警告?

4

2 回答 2

4

该警告意味着您在扩展该课程时没有做您“同意”做的事情。该类相信static final serialVersionUID field of type long如果您扩展它,您将在您的类中拥有一个。那是因为它implements Serializable是一个需要这个变量的接口。

要抑制警告,请添加:

@SuppressWarnings("serial")

在声明类的行上方 ( public class Foo)

要修复警告,请按如下方式声明变量:

private static final long serialVersionUID = 1812107715815332895L;

并确保您使用的 long 是随机生成的。

通过单击行号旁边的黄色灯泡,Eclipse 允许将这两个选项作为快速修复。

于 2012-07-05T05:36:48.943 回答
1

serialVersionUID 是 Serializable 类的通用版本标识符。反序列化使用这个数字来确保加载的类与序列化的对象完全对应。如果未找到匹配项,则抛出 InvalidClassException。

要解决此问题,请在类中声明一个静态唯一 ID -

private static final long serialVersionUID = 75264722950069776147L; // 唯一身份

于 2012-07-05T05:35:04.120 回答