我有一个扩展Exception的公共类。这是我的自定义Exception类,如下所示:
package com.yahoo.chris511026.paragraphcount;
public class InputException extends Exception {
public String getMessage() {
return "Error: No text entered.";
}
}
在InputException下方是一条黄线,指示类InputException没有声明类型为long的静态最终版本UID字段。如果我的班级没有实现Serialiazble接口,为什么这么说呢?我该怎么做才能清楚解决此问题。我不想修改或向我的代码添加任何内容。
最佳答案
这是警告而不是错误。指出,将serialVersionUID
字段添加到任何可序列化的类是一个好习惯。而且您的异常类已经可以序列化,因为它间接扩展了Throwable
并且Throwable
实现了Serializable
。
(如果未定义serialVersionUID
字段,那么JVM将根据该类的当前API定义即时计算一个。这使您更容易受到由于类更改而导致串行版本UID不匹配的问题的影响。)
如果我的班级没有实现Serialiazble接口,为什么这么说呢?
不,不是说。
我该怎么做才能清楚解决此问题。我不想修改或向我的代码添加任何内容。
有三种方法可以解决此问题:
如果您不想更改任何代码,请修改IDE的编译器设置以禁用此警告。
添加serialVersionUID
字段;例如使用IDE的加速器,这应该为您提供使用标准算法进行计算的选项。
添加适当的@SuppressWarning
批注。如果将来需要将异常对象序列化的可能性为零,则这将是适当的。
关于java - 为什么收到消息:“可序列化的类Input Exception没有声明类型为long的静态最终串行Verison UID字段”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14815350/