Java 抽象异常类中的串行版本uid
我有一个基本自定义异常类Java 抽象异常类中的串行版本uid,java,exception,serialization,java-8,Java,Exception,Serialization,Java 8,我有一个基本自定义异常类BaseException public class BaseException extends RuntimeException { } public class CustomException extends BaseException { private static final long serialVersionUID = 3655655808021733968L; } 以及扩展BaseException public class BaseExcepti
BaseException
public class BaseException extends RuntimeException {
}
public class CustomException extends BaseException {
private static final long serialVersionUID = 3655655808021733968L;
}
以及扩展BaseException
public class BaseException extends RuntimeException {
}
public class CustomException extends BaseException {
private static final long serialVersionUID = 3655655808021733968L;
}
我收到了一条关于串行版本uid未在BaseException类中声明的警告。抽象类中是否需要它?这是一种好的做法吗?有没有办法消除警告?是的,您需要在抽象类中定义serialVersionUID。序列化序列化实例状态,通常指非静态字段;任何继承的状态都需要与对象的其余状态一起序列化 BaseException中没有字段并不意味着应该跳过serialVersionUID 注意,与流行的观点相反,serialVersionUID不需要基于类名或结构的散列。当类没有显式定义
serialVersionUID
字段时,只有默认的计算串行版本UID才会执行此操作。通常,您可以将其声明为一个简单的数字:
private static final long serialVersionUID = 1;