2016-12-09 21 views
0

シングルトンを使用するJavaオブジェクトがあります(オブジェクトのコードのどこかにあるSingleton.getInstance()など)。私は依存性注入(Dagger 2)の使用に切り替えています。標準的な方法は、このクラスのファクトリを作成し、DIフレームワークでファクトリにシングルトンを注入し、ファクトリにシングルトンを渡しますそれをメンバ変数に格納するオブジェクトのコンストラクタ(他の引数とともに)依存関係を持つオブジェクトのデシリアライズ

しかし、このオブジェクトはシリアライズ可能です。シングルトンを含むメンバ変数をtransientにすると、シリアライゼーションが可能になりますが、オブジェクトがデシリアライズされると、メンバ変数はnullになります。デシリアライズ後に依存関係を再度取得する最善の方法は何ですか?

+0

[Javaクラスの静的データメンバーをシリアル化する方法は?](http://stackoverflow.com/questions/1008023/how-to-serialize-static-data-members-of-a-java-クラス) – Paul

答えて

0

これは少しシンプルに見えるかもしれませんが、実際には、逆シリアル化の後にそのフィールドを再割り当てする必要があるという答えがあります。特に、そのフィールドの設定は、通常、オブジェクトへのフィールドの影響に応じて、オブジェクトのsetterまたはinitメソッドを使用して行われます。可能であれば、オブジェクトが逆シリアル化された直後に割り当てるのが簡単かもしれません。

関連する問題