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

how to remove the warning The serializable class ClASSNAME does not declare a static final serialVersionUID field of type long

本问题已经有最佳答案,请猛点这里访问。

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

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

请怎么取?

1
2
3
4
5
6
7
8
9
10
11
public class PhoneAlreadyExists extends Exception {
    public PhoneAlreadyExists() {
        // TODO Auto-generated constructor stub
        super();
    }

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

}


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

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


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


需要声明long类型的静态final serialversionID字段。

查找Java的EDCOX1×0 API。异常必须实现SerializableSerializable类必须具有serialVersionUID

1
public static final long serialVersionUID = 1L;

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


要忽略警告"可序列化类类名没有声明静态的最终serialversionuid……",请在eclipse*内执行以下操作:

  • 单击Windows首选项Java编译器错误/警告
  • 点击"潜在编程问题"
  • 向下滚动到"没有serialversionID的可序列化类"
  • 选择"忽略"
  • 单击应用
  • 单击确定
  • 保存并关闭Eclipse IDE当您重新打开Eclipse时,这些特定的警告将不再列出。

    *对于这个示例解决方案,我使用Eclipse IDE为Java开发人员——版本:MAR.2版本(4.5.2)


    在大多数情况下,最好添加serialversionID,但是Eclipse会对所有Swing派生类发出警告,这些类永远不会被序列化。我试着在偏爱下改变设置-> java>编译器>错误/警告>潜在的编程问题,但是它没有效果。所以我想最好的解决方案是在每个类上禁止永远不会序列化的警告;或者咬紧牙关忽略警告。


    只需将此代码@suppresswarnings("serial")添加到公共类phoneAlreadyExists扩展异常行