在 java 中将子类设置为不可序列化

2022-09-02 02:52:26

我有一个实现可序列化的类。现在我扩展了这个类,我希望这个扩展类是不可序列化的。那么该怎么做呢?

例如。我有

class A implements Serializable.

我有

class B extends A.

但我希望类 B 是不可序列化的。


答案 1

您无法删除接口,但可以防止在运行时进行序列化:

class B extends A {
    private void writeObject(ObjectOutputStream oos) throws IOException {
        throw new NotSerializableException();
    }
}

答案 2

正如其他人已经明确指出的那样,类的子类不可能是非类。SerializableSerializable

如果希望子类的属性不被序列化,一种选择是使它们全部瞬态化。

如果您需要更多(您不希望序列化超类字段),请重写,如此处所述 - https://web.archive.org/web/20120626144013/http://java.sun.com/developer/technicalArticles/ALT/serializationwriteObject(ObjectOutputStream)readObject(ObjectInputStream)