-2

クラス[たとえばA]がシリアル化されると、Aを拡張するすべてのサブクラスがシリアル化されます。クラスAが2000クラス拡張されたシナリオの場合、シリアル化されたオブジェクトはすべてのサブクラスオブジェクトで構成されているとします。サブクラスから「privatevoidwriteObject」をオーバーライドすることにより、親オブジェクトがシリアル化されるのを完全に排除します。確認してください。

よろしく、Subbu

4

2 に答える 2

6

クラス[たとえばA]がシリアル化されると、Aを拡張するすべてのサブクラスがシリアル化されます

いいえ、シリアル化の一般的なコントラクトが維持されている限り、クラスAとそのインスタンス変数はシリアル化されます。

クラスAが2000クラス拡張されたシナリオの場合、シリアル化されたオブジェクトはすべてのサブクラスオブジェクトで構成されているとします。

クラスのシリアル化された表現には、そのスーパータイプに関する情報が含まれて ます。しかし、そのサブクラスではありません。

サブクラスから「privatevoidwriteObject」をオーバーライドすることにより、親オブジェクトがシリアル化されるのを完全に排除します。確認してください。

いいえ、オーバーライドprivate void writeObjectしても親オブジェクトのシリアル化は妨げられません。Javadocを参照してください:

writeObjectメソッドは、対応するreadObjectメソッドがオブジェクトを復元できるように、特定のクラスのオブジェクトの状態を書き込む役割を果たします。メソッドは、オブジェクトのスーパークラスまたはサブクラスに属する状態に関係する必要はありません。

于 2013-01-18T13:43:09.690 に答える
0

クラス[たとえばA]がシリアル化されると、Aを拡張するすべてのサブクラスがシリアル化されます。

ナンセンス。ただし、クラスAがシリアライズ可能である場合、その派生クラスはすべてシリアライズ可能になります。

クラスAが2000クラス拡張されたシナリオの場合、シリアル化されたオブジェクトはすべてのサブクラスオブジェクトで構成されているとします。

もっとナンセンス。ただし、シリアル化の結果は、シリアル化されたクラスとそのすべてのシリアル化可能な基本クラスのデータで構成されます。

サブクラスから「privatevoidwriteObject」をオーバーライドすることにより、親オブジェクトがシリアル化されるのを完全に排除します。

いいえ。

オブジェクトシリアル化仕様を読みましたか?それはすべてそこにあります。

于 2013-01-18T23:02:24.460 に答える