【发布时间】:2015-11-11 14:47:32
【问题描述】:
我在Dagger 2 website上看到了下面的例子:
class Thermosiphon implements Pump {
private final Heater heater;
@Inject
Thermosiphon(Heater heater) {
this.heater = heater;
}
...
}
和文档:
当请求一个新的实例时,Dagger 会获取所需的 参数值并调用此构造函数。
当我编写一个模块来提供Thermosiphon 之类的
@Module
public class ThermosiphonModule {
@Provides
@Singleton
Thermosiphon provideThermosiphon() {
return new Thermosiphon(???);
}
}
Thermosiphon 构造函数仍然需要 Heater 作为参数,从而使整个“自动注入构造函数依赖项”变得无用。
我试过了
return new Thermosiphon(null);
和
return new Thermosiphon();
(空构造函数)并希望 Dagger2 能够发现我希望注入缺失的 Heater,但提供的 Thermosiphon 的 Heater 始终为空;
我确认我的HeaterComponent / HeaterModule 工作正常并且能够提供Heater。
我是否完全误解了“Dagger 为你满足构造函数依赖项”的整个功能,还是我遗漏了什么?
【问题讨论】: