3

ArrayList などのシリアル化できないオブジェクトを使用してクラスを作成しました...このクラスは Serializable を実装しますが、もちろん、ObjectOutputStream の writeObject メソッドを使用してクラス インスタンスをファイルに書き込もうとすると、IOException が発生します。
この問題を回避するには?writeObject メソッドは最終的なのでオーバーライドできません。オブジェクトを手動で保存する必要がありますか (すべての ArrayList を読み取り、その要素を 1 つずつ保存します)、または writeObject メソッドを管理して機能させる機会はありますか?

PS: 問題に意味がないので含める必要はないと思いますが、コードを投稿する必要があると思われる場合は (他のユーザー定義クラスも含まれているため、わかりにくい)、お知らせください。

4

2 に答える 2

3
  1. オーバーライドしたり、「実装を提供するofwriteObject() 」必要はありません。

  2. ArrayList 上記のコメントに従って、シリアライズ可能です

  3. 表示される実際のエラー メッセージを読む必要があります。これは単なる「IOException」ではなく、情報が含まれています。ほぼ確実に、他のクラスがシリアライズ可能でないことを示しています。だから、それはあなたが修正しなければならないものです。writeObject()そして、それを行うには、通常、メソッドも必要ありません。

于 2012-04-23T01:40:53.417 に答える
0

writeObject は final ですが、非公開でもあります。それをオーバーライドすることは想定されていません。実装を提供することになっています(これも非公開です)。奇妙ですが、そういうことです。

于 2012-04-22T23:33:52.570 に答える