java - 为什么我收到消息 : "The serializable class Input Exception does not declare a static final serial Verison UID field of type long"?

标签 java exception

我有一个扩展 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/

相关文章:

java - 解码 xml 时忽略前缀(命名空间)

Java序列化: readFields/putFields vs.序列化映射

java - 是什么导致了 java.lang.ArrayIndexOutOfBoundsException 以及如何防止它?

java - 由 : java. lang.IllegalStateException 引起:应为 BEGIN_ARRAY 但在第 1 行第 2 列为 BEGIN_OBJECT

python - 如何在 python 中捕获 finally 异常子句的消息?

java - 在 recyclerview 内点击获取数据

java - 在Java中的多个整数HashSet中查找所有没有重复的元素

Spring @ControllerAdvice 与 ErrorController

r - 使用 R 中的条件对象将 `immediate.` 设置为 `TRUE`?

java - 何时为列表创建迭代器?