反序列化具有依赖项的对象

时间:2016-12-09 19:12:55

标签: java serialization dependency-injection

我有一个使用单例的Java对象(例如对象代码中的某个地方是Singleton.getInstance())。我转而使用依赖注入(Dagger 2),标准的方法是为这个类创建一个工厂,让DI框架将单例注入工厂,并让工厂通过单例到对象的构造函数(以及其他参数),它会将它存储在成员变量中。

但是这个对象是可序列化的。标记包含单例transient的成员变量允许序列化发生,但是当反序列化对象时,成员变量为null。反序列化后再次获得依赖关系的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

好吧看起来有点简单,但答案实际上是你需要在反序列化后重新分配该字段。特别是,设置该字段通常是使用对象中的setter或init方法完成的,具体取决于字段对对象的影响。如果可能,在反序列化对象后立即分配它可能很容易。