Я увидел следующий пример на веб-сайте 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.
Неужели я не понимаю всю функцию "Кинжал", которая удовлетворяет зависимостям конструктора для вас? или я что-то упускаю?