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します。醜いが効果的。writeObjectIOException

残念ながら、サブクラスreadObjectを.writeObjectfinal

もちろん、これは疑わしい OO 設計です ( Liskov Substitution Principleに違反しています) が、本当にそれを行う必要がある場合は...

于 2013-04-02T09:14:54.880 に答える
-1

すべてのプロパティを一時的にします:)

于 2013-04-02T09:11:39.930 に答える