首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Dagger2是否初始化它不使用的对象?

Dagger2是否初始化它不使用的对象?
EN

Stack Overflow用户
提问于 2017-11-21 19:49:34
回答 2查看 788关注 0票数 2

我有一个@Module类,它有许多@Provides方法。我的@组件依赖于这个模块类。例如:

代码语言:javascript
运行
复制
@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 (及其依赖项),还是那些未构造的?

EN

Stack Overflow用户

发布于 2017-11-21 19:53:30

我已经有一段时间没有使用Dagger了,但是您应该在provide语句中指定这些参数才能正常工作。它将设法调用其他提供程序方法来获取单例实例。

代码语言:javascript
运行
复制
@Provides
@Singleton
ObjectB provideObjectB(ObjectD objectD) {
    return new ObjectB(objectD);   
}

否则,也可以将其指定为注入构造函数。请参阅Dagger 2 injecting parameters of constructor

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47421531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档