メンバーが全てSerializableでないとシリアライズ出来ない…わけではない
問題
下記のような、 Child
型(Serializable
をimplementsしていない)をフィールドとして持つクラス Parent
はシリアライズできるでしょうか?
class Parent implements Serializable { private Child child; // ... } class Child { }
答え
シリアライズしようとしている対象オブジェクトの状態によります。
常にシリアライズ不能というわけではありません。
最も単純な例で言うと、 child
フィールドが null
であればシリアライズ時に NotSerializableException
はスローされません。
また別の例としては、 Child
のサブクラスで Serializable
な型のインスタンスがセットされている場合も例外はスローされません。
コードサンプル
実行可能サンプルコードをこちら に置いています。