を拡張ArrayList<B> arrayする特定のクラスのオブジェクトがあるとします。インスタンス フィールドとフィールドがあります。を使用して.datファイルに保存するには、 (だけでなく!)実装が必要であることを知っています。ただし、ファイルからオブジェクトをロードするときに(を使用して)次のことがわかりました。BABbbAaaarrayObjectOutputStreamBArrayListSerializableObjectInputStream
arrayLoaded = (ArrayList<B>)myObjIn.readObject();
ロードされた配列は元の配列と同一ではありません: 特定のケースでarrayLoaded.get(0).bbは、 は と同じ値を持ちますが、array「arrayLoaded.get(0).aaゼロ化」されています。arrayファイルに保存されたときの値に関係なく、デフォルトの初期化値があります。しかし、この問題は もA実装させることで解決されSerializableます。
私を悩ませているのは、このエラーが非常に微妙であることです: 例外も警告も (Eclipse では) も何もありません。これには理由がありますか、それとも単に Java 開発者による見落としですか? Serializableオブジェクト IO ストリームを使用するたびに、それを受け入れて、階層内のどのクラスが実装されているかをよく考える必要がありますか?