gpt4 book ai didi

dagger - 当你 "include"来自 Dagger 中另一个模块的模块时会发生什么?

转载 作者:行者123 更新时间:2023-12-04 00:35:59 32 4
gpt4 key购买 nike

Dagger documentation页面说:

To get the most out of compile-time validation, create a module that includes all of your application's modules.



这留下了一些有待回答的问题:
  • 包含其他模块实际上是什么效果? (至少,似乎包含的模块不需要直接实例化)
  • 不同模块多次包含一个模块是否合法/可能?那时会发生什么?
  • 最佳答案

    文档需要改进。

    Includes 是字面意义上的包含 - 包含模块的所有 @Provides 方法,完全可传递地,被收集在一起并被视为(实际上)被分析模块的一部分。所以:

    @Module(includes = BModule.class)
    class AModule {
    @Provides A provideA(...) { ... }
    }

    @Module
    class BModule {
    @Provides B provideB(...) { ... }
    }

    在功能上等同于
    @Module
    class JointModule {
    @Provides A provideA(...) { ... }
    @Provides B provideB(...) { ... }
    }

    此外,模块包含会折叠重复项。因此,如果您有:
    @Module(includes = {BModule.class, CModule.class})
    class AModule { ... }

    @Module(includes = CModule.class)
    class BModule { ... }

    @Module
    class CModule { ... }

    它将导致来自 AModule 的绑定(bind)集合(去重) + BModule + CModule .

    关于dagger - 当你 "include"来自 Dagger 中另一个模块的模块时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24480916/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com