如何删除警告可序列化类ClASSNAME不声明long类型的静态最终serialVersionUID字段

时间:2013-02-23 21:21:30

标签: java

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

  

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

如何删除它?

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

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

}

6 个答案:

答案 0 :(得分:22)

要全局更改eclipse中的行为:转到首选项 - > Java-> 编译器 - >错误/警告 - >潜在的编程问题。这个具体问题有一个条目。您也可以为特定项目更改它。

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

答案 1 :(得分:10)

在班级上添加注释@SuppressWarnings("serial"),以忽略该警告

答案 2 :(得分:6)

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

查找Java的Serializable API。例外必须实现Serializable,而Serializable类必须有serialVersionUID

public static final long serialVersionUID = 1L;

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

答案 3 :(得分:2)

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

  1. 单击Window-Preferences-Java-Compiler-Errors / Warnings
  2. 点击“潜在的编程问题”
  3. 向下滚动到“Serializable class without serialVersionUID”
  4. 选择“忽略”
  5. 点击“应用”
  6. 点击确定
  7. 保存并关闭eclipse IDE 当您重新打开eclipse时,不应再列出这些特定警告。

    *对于此示例解决方案,我正在使用Eclipse IDE for Java Developers - Version:Mars.2 Release(4.5.2)

答案 4 :(得分:1)

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

答案 5 :(得分:1)

在大多数情况下最好添加serialversionUID,但是eclipse会在所有swing派生类上发出警告,这些类永远不会被序列化。我尝试更改首选项的设置 - > Java - >编译器 - >错误/警告 - >潜在的编程问题,但它没有任何影响。所以我想最好的解决办法是抑制每个类永远不会序列化的警告;或咬紧牙关,不理会警告。