当我创建一个自定义异常类时,如下所示
public class MyApppException extends Exception {
private String message = null;
public MyApppException() {
super();
}
public MyApppException(String message) {
super(message);
this.message = message;
}
public MyApppException(Throwable cause) {
super(cause);
}
}
编译器给我下面的减弱
可序列化类 InsufficientBalanceException 未声明 long 类型的静态最终 serialVersionUID 字段
从Java doc我了解serialVersionUID的含义
序列化运行时将版本号与每个可序列化类相关联,称为 serialVersionUID,在反序列化期间使用该版本号来验证序列化对象的发送者和接收者是否已为该对象加载了与序列化兼容的类。如果接收者为对象加载了一个类,该对象的 serialVersionUID 与相应发送者的类不同,则反序列化将导致 InvalidClassException。可序列化的类可以通过声明一个名为“serialVersionUID”的字段来显式声明自己的serialVersionUID,该字段必须是静态的、最终的和long类型:
但是我不明白为什么Java在Exception和Throwable类中声明serialVersionUID?Exception和Throwable类中的 serialVersionUID 有什么用?真的需要吗?如果是,为什么?有人请澄清。
例外
public class Exception extends Throwable {
static final long serialVersionUID = -3387516993124229948L;
可投掷的
public class Throwable implements Serializable {
/** use serialVersionUID from JDK 1.0.2 for interoperability */
private static final long serialVersionUID = -3042686055658047285L;