我有一个基本的自定义异常类BaseException
public class BaseException extends RuntimeException {
}
以及几个扩展BaseException
的自定义异常
public class CustomException extends BaseException {
private static final long serialVersionUID = 3655655808021733968L;
}
我收到有关未在 BaseException 类中声明串行版本 uid 的警告。抽象类中需要它吗?这是一个好的做法吗?有什么办法可以消除警告吗?
最佳答案
是的,您需要在抽象类中定义serialVersionUID。序列化对实例状态进行序列化,这通常意味着非静态字段;任何继承的状态都需要与对象的其余状态一起序列化。
BaseException 中没有字段这一事实并不意味着您应该跳过serialVersionUID。
请注意,与普遍的看法相反,serialVersionUID 不需要基于类名称或结构的哈希值。当类未显式定义 serialVersionUID
字段时,只有默认计算串行版本 UID 会执行此操作。通常,您可以将其声明为一个简单的数字:
private static final long serialVersionUID = 1;
关于java - 抽象异常类中的串行版本 uid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61508485/