2016-12-09 2 views
0

У меня есть объект Java, который использует одноэлементный (например, где-то в коде объекта Singleton.getInstance()). Я перехожу к использованию инъекции зависимостей (Dagger 2), и стандартным способом сделать это было бы создание фабрики для этого класса, чтобы DI-инфраструктура ввела один синглтон в заводскую установку, и фабрика передала синглтон на конструктор объекта (вместе с другими аргументами), который сохранит его в переменной-члене.Удаление десериализации объекта с зависимостями

Но этот объект является сериализуемым. Маркировка переменной-члена, содержащей singleton transient, позволяет выполнять сериализацию, но когда объект десериализуется, переменная-член имеет значение null. Каков наилучший способ вернуть зависимость после десериализации?

+0

Возможный дубликат [Как сериализовать статические элементы данных класса Java?] (Http://stackoverflow.com/questions/1008023/how-to-serialize-static-data-members-of-a-java- класс) – Paul

ответ

0

Ну, это может показаться немного простым, но на самом деле ответ заключается в необходимости переназначить это поле после десериализации. В частности, установка этого поля обычно выполняется с помощью установщика или метода init в объекте, в зависимости от влияния поля на объект. Если возможно, его можно легко назначить сразу после десериализации объекта.

Смежные вопросы