Serializable
如果超类正在实现接口,如何停止子类的序列化?
问问题
3336 次
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 回答