考虑以下Java异常类:

public class BarException extends RuntimeException {
    // [...]
}

public class FooException extends BarException {
    private static final long serialVersionUID = -5322002268075295537L;

    // [...]
}

如果我希望更新继承层次结构以删除BarException,以便FooException直接从RuntimeException派生,这是否需要更改serialVersionUID值?
// FooException with updated inheritance hierarchy
public class FooException extends RuntimeException {
    private static final long serialVersionUID = ???;

    // [...]
}

最佳答案

是。根据serialization spec,“将类移到层次结构的上层或下层”将导致与以前的序列化实例不兼容。

10-08 17:59