5

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

4

3 回答 3

8

您可以使用writeObject()方法来实现这一点。

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

private void writeObject(java.io.ObjectOutputStream stream)
        throws IOException {
    throw new IOException('No serialization not allowed')
}
于 2013-04-02T09:13:18.867 回答
6

实现readObject无条件writeObject抛出IOException. 丑陋但有效。

不幸的是,你不能阻止子类实现它自己的readObject方法writeObject来恢复“可序列化”......除非你将子类声明为final.

当然,这是有问题的 OO 设计(它违反了Liskov 替换原则),但如果你真的需要这样做......

于 2013-04-02T09:14:54.880 回答
-1

使所有属性瞬态:)

于 2013-04-02T09:11:39.930 回答