2011-08-01 4 views
0

したがって、すべてのオブジェクトはシリアル化されていますが、それぞれにはコレクション内の別のオブジェクト(同じ型のオブジェクト)への参照が含まれています。私は一時的な名前を付けるべきだと思います。逆シリアル化時に再びオブジェクトを取得するために使用できる文字列を格納し、その時点で復元してください。しかし、その場合は、上書きされたreadObjectメソッドでそれを行いますか?その説明が理にかなっていれば誰でも助けることができますか?ありがとう。それぞれがコレクション内の別のオブジェクトへの参照を含むオブジェクトのコレクションをシリアル化するとき、それは何をしますか?

答えて

1

これを行う必要はありません。 Javaのシリアライゼーションは循環参照を処理できます。 ObjectInputStreamとObjectObjectStreamは、無限の直列化ループを防ぐために、すでに処理したオブジェクトを追跡します。長い間ストリームを保持していると、メモリリークが発生する可能性があります。

+0

ああ、ありがとう。私はそれがダブルリンクされたリストをシリアル化することができなければならないので、これを行うことができるかどうか疑問に思っていた。しかし、長い間ストリームを握っていることはどういう意味ですか?ファイルとのシリアル化は大丈夫ですよね? – Brody

+1

@Brody権利。開いている接続を介してオブジェクトを交換していた場合は、ObjectOutputStream.reset()またはObjectOutputStream..writeUnshared()を調べることをお勧めします。 – EJP

関連する問題