Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 抽象异常类中的串行版本uid_Java_Exception_Serialization_Java 8 - Fatal编程技术网

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;