我有一个@Module类,它有许多@Provides方法。我的@组件依赖于这个模块类。例如:
@Singleton
@Component(modules = { MyModule.class})
public interface MyComponent {
ObjectA getObjectA();
ObjectB getObjectB();
}
@Module
public class MyModule {
@Provides
@Singleton
ObjectC provideObjectC() {
return new ObjectC();
}
@Provides
@Singleton
ObjectD provideObjectD() {
return new ObjectD();
}
@Provides
@Singleton
ObjectA provideObjectA(ObjectC objectC) {
return new ObjectA(objectC);
}
@Provides
@Singleton
ObjectB provideObjectB(ObjectD objectD) {
return new ObjectB(objectD);
}
}我使用Dagger创建了一个组件实例,并提供了一个新的MyModule实例。如果我只调用myComponent.getObjectA(),它也会构造ObjectB (及其依赖项),还是那些未构造的?
发布于 2017-11-21 19:53:30
我已经有一段时间没有使用Dagger了,但是您应该在provide语句中指定这些参数才能正常工作。它将设法调用其他提供程序方法来获取单例实例。
@Provides
@Singleton
ObjectB provideObjectB(ObjectD objectD) {
return new ObjectB(objectD);
}否则,也可以将其指定为注入构造函数。请参阅Dagger 2 injecting parameters of constructor
https://stackoverflow.com/questions/47421531
复制相似问题