Я увидел следующий пример на веб-сайте Dagger 2:
class Thermosiphon implements Pump {
private final Heater heater;
@Inject
Thermosiphon(Heater heater) {
this.heater = heater;
}
...
}
и документация:
Когда запрашивается новый экземпляр, кинжал получит требуемый значения параметров и вызвать этот конструктор.
Когда я пишу модуль для предоставления Thermosiphon
как
@Module
public class ThermosiphonModule {
@Provides
@Singleton
Thermosiphon provideThermosiphon() {
return new Thermosiphon(???);
}
}
Конструктор Thermosiphon
по-прежнему требует Heater
в качестве аргумента, что делает "автоматическое вложение зависимостей конструктора" бесполезным.
Я пробовал
return new Thermosiphon(null);
и
return new Thermosiphon();
(пустой конструктор) и надеялся, что Dagger2 заберет, что я хочу, чтобы отсутствующий Heater
был введен, но нагреватель предоставленного Thermosiphon
всегда имеет значение null;
Я проверил, хотя мой HeaterComponent
/HeaterModule
работает нормально и может предоставить Heater
.
Неужели я не понимаю всю функцию "Кинжал", которая удовлетворяет зависимостям конструктора для вас? или я что-то упускаю?