我有一个扩展 Exception 的公共(public)类。这是我的自定义异常类,如下所示:
package com.yahoo.chris511026.paragraphcount;
public class InputException extends Exception {
public String getMessage() {
return "Error: No text entered.";
}
}
InputException 下面是一条黄线,表示类 InputException 未声明 long 类型的静态最终版本 UID 字段。如果我的类没有实现 Serialiazble 接口(interface),为什么会这样说?我该怎么做才能明确解决这个问题。我不想修改或添加任何内容到我的代码中。
最佳答案
这是警告而不是错误。它指出,向任何可序列化类添加 serialVersionUID
字段是一种很好的做法。并且您的异常类已经可序列化,因为它间接扩展了Throwable
并且Throwable
实现了Serializable
。
(如果您没有定义 serialVersionUID
字段,那么 JVM 会根据类的当前 API 定义动态计算一个字段。这使您更容易受到串行版本 UID 的问题的影响由于类别更改而导致不匹配。)
Why is it saying this if my class doesn't implement the Serialiazble interface?
没有。并不是这么说的。
What do I do to clear resolve this issue. I don't want to have to modify or add anything to my code.
有三种方法可以解决这个问题:
如果您不想更改任何代码,请修改 IDE 的编译器设置以禁用此警告。
添加一个
serialVersionUID
字段;例如使用 IDE 的加速器,您可以选择使用标准算法进行计算。添加适当的
@SuppressWarning
注释。如果您的异常对象将来需要序列化的可能性为零,那么这将是合适的。
关于java - 为什么我收到消息 : "The serializable class Input Exception does not declare a static final serial Verison UID field of type long"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14815350/