我创建了一个扩展Exception
类的类,我在Eclipse上得到了这个警告
可序列化类PhoneAlreadyExists不声明静态 long的最终serialVersionUID字段
如何删除它?
public class PhoneAlreadyExists extends Exception {
public PhoneAlreadyExists() {
// TODO Auto-generated constructor stub
super();
}
PhoneAlreadyExists(String message) {
super(message);
}
}
答案 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 *中执行以下操作:
保存并关闭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 - >编译器 - >错误/警告 - >潜在的编程问题,但它没有任何影响。所以我想最好的解决办法是抑制每个类永远不会序列化的警告;或咬紧牙关,不理会警告。