如何删除警告可序列化类ClASSNAME没有声明类型为long 的静态最终serialVersionUID字段
我创建了一个扩展Exception
类的类,我在Eclipse上收到了这个警告
可序列化类PhoneAlreadyExists不声明long类型的静态最终serialVersionUID字段
如何删除它?
public class PhoneAlreadyExists extends Exception { public PhoneAlreadyExists() { // TODO Auto-generated constructor stub super(); } PhoneAlreadyExists(String message) { super(message); } }
在您的类上添加注释@SuppressWarnings("serial")
,以忽略该警告
要全局更改eclipse中的行为:转到Preferences-> Java-> Compiler – > Errors / Warnings-> Potential Programming Problems。 这个具体问题有一个条目。 您也可以为特定项目更改它。
这回答了你的问题,虽然 – 我建议把它留在警告级别并添加缺少的字段。 或者将SuppressWarnings注释添加到那些真正不需要该字段的可序列化类中,因为它们永远不会被序列化。
您需要声明long类型的静态最终serialVersionUID字段。
查找Java的Serializable
API。 exception必须实现Serializable
, Serializable
类必须具有serialVersionUID
:
public static final long serialVersionUID = 1L;
每当您对类进行不兼容的更改时,请增加此版本。
要忽略警告“可序列化类ClASSNAME不声明静态最终serialVersionUID ……”,请在eclipse *中执行以下操作:
- 单击Window-Preferences-Java-Compiler-Errors / Warnings
- 点击“潜在的编程问题”
- 向下滚动到“Serializable class without serialVersionUID”
- 选择“忽略”
- 单击“应用”
- 单击确定
保存并关闭eclipse IDE当您重新打开eclipse时,不应再列出这些特定警告。
*对于此示例解决方案,我正在使用Eclipse IDE for Java Developers – Version:Mars.2 Release(4.5.2)
只需在公共类上面添加此代码@SuppressWarnings(“serial”)PhoneAlreadyExists extends Exception {line
在大多数情况下最好添加serialversionUID,但是eclipse会在所有swing派生类上发出警告,这些类永远不会被序列化。 我尝试更改偏好设置 – > Java – >编译器 – >错误/警告 – >潜在的编程问题,但它没有任何效果。 所以我想最好的解决办法是抑制每个类永远不会序列化的警告; 或咬紧牙关,忽略警告。