Похоже, вы в корне не понимаете, как работает внедрение зависимостей. Если вы пытаетесь использовать ссылку на Injector
где-либо в вашем коде, кроме места, где вы загружаете приложение, вы не используете внедрение зависимостей, вместо этого вы используете его в качестве локатора службы. Вы вынуждены готовить Injector
всякий раз, когда вам нужно протестировать класс, и ваши классы не дают понять в своих конструкторах, каковы их зависимости (поскольку кто знает, что они получат из Injector
в некоторых метод, если они имеют или могут получить ссылку на него). На самом деле, использование enum
, как вы описали здесь, еще хуже: вы вообще не можете изменить конфигурацию, даже для тестирования, потому что ваши модули жестко закодированы в enum.
С внедрением зависимостей классы объявляют только свои зависимости и позволяют Injector
, работающему прозрачно (после первоначального вызова получить корневой объект приложения), предоставить все эти зависимости. Это делает понимание, тестирование и изменение функциональности вашего кода относительно простым. В любом случае, я бы посоветовал узнать больше о том, как DI и Guice предназначены для использования ... вы действительно не должны этого делать.