如何停止子类的序列化?

Ami*_*itG 4 java serialization

如果超类正在实现Serializable接口,如何停止子类的序列化?

Aru*_*hny 7

您可以使用writeObject()方法来实现此目的.

您可以使用writeObject自定义对象的序列化行为,如果您不允许序列化Class您覆盖此方法并抛出错误.

private void writeObject(java.io.ObjectOutputStream stream)
        throws IOException {
    throw new IOException('No serialization not allowed')
}
Run Code Online (Sandbox Code Playgroud)


Ste*_*n C 5

无条件抛出异常的实现readObjectwriteObject方法IOException。丑陋但有效。

不幸的是,你不能阻止执行自己的子子类readObjectwriteObject方法,以恢复“串行化” ......除非你声明的子类的final

当然,这是一个有问题的OO设计(它违反了Liskov替换原理),但是如果您确实需要这样做的话……


Sud*_*kar -1

使所有属性暂时:)

  • 类仍然是可序列化的 (2认同)