19

我创建了一个扩展Exception类的类,我在 Eclipse 上收到了这个警告

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

请问怎么去掉?

public class PhoneAlreadyExists extends Exception {
    public PhoneAlreadyExists() {
        // TODO Auto-generated constructor stub
        super();
    }

    PhoneAlreadyExists(String message) {
        super(message);
    }

}
4

6 回答 6

22

要全局更改 Eclipse 中的行为:转到 Preferences->Java-> Compiler ->Errors/Warnings->Potential Programming Problems。这个特定问题有一个条目。您也可以为特定项目更改它。

不过,这回答了您的问题-我建议将其保留在警告级别并添加缺少的字段。或者将 SuppressWarnings 注释添加到那些真正不需要该字段的可序列化类,因为它们永远不会被序列化。

于 2013-02-23T21:26:23.720 回答
11

在您的课程上添加注释@SuppressWarnings("serial"),以忽略该警告

于 2013-02-23T21:25:27.130 回答
9

您需要声明一个 long 类型的静态最终 serialVersionUID 字段。

查找SerializableJava的API。异常必须实现Serializable,并且Serializable类必须具有serialVersionUID

public static final long serialVersionUID = 1L;

每当您对类进行不兼容的更改时,请增加此版本。

于 2013-02-23T21:23:36.873 回答
2

要忽略警告“可序列化的类 ClassNAME 没有声明静态最终 serialVersionUID......”,请在 eclipse* 中执行以下操作:

  1. 单击窗口-首选项-Java-编译器-错误/警告
  2. 点击“潜在的编程问题”
  3. 向下滚动到“没有serialVersionUID的可序列化类”
  4. 选择“忽略”
  5. 单击应用
  6. 点击确定

保存并关闭您的 Eclipse IDE 当您重新打开 Eclipse 时,不应再列出这些特定的警告。

*对于这个示例解决方案,我使用 Eclipse IDE for Java Developers - 版本:Mars.2 Release (4.5.2)

于 2016-03-29T10:45:41.070 回答
1

只需在公共类 PhoneAlreadyExists 上方添加此代码 @SuppressWarnings("serial") extends Exception { line

于 2013-11-26T12:28:27.330 回答
1

大多数情况下最好添加serialversionUID,但是eclipse对所有swing派生类都会给出警告,这些类永远不会被序列化。我尝试在首选项-> Java -> 编译器-> 错误/警告-> 潜在的编程问题中更改设置,但没有效果。所以我想最好的解决方案是抑制每个永远不会被序列化的类的警告;或者咬紧牙关,忽略警告。

于 2015-03-26T13:01:21.380 回答