该匕首文档页说:
要充分利用编译时验证,请创建一个包含应用程序所有模块的模块。
这留下了一些需要回答的问题:
文档需要改进。
Includes 是字面包含 - 包含模块的所有 @Provides 方法,完全可传递,被收集在一起并被视为(实际上)被分析模块的一部分。所以:
@Module(includes = BModule.class)
class AModule {
@Provides A provideA(...) { ... }
}
@Module
class BModule {
@Provides B provideB(...) { ... }
}
Run Code Online (Sandbox Code Playgroud)
在功能上与
@Module
class JointModule {
@Provides A provideA(...) { ... }
@Provides B provideB(...) { ... }
}
Run Code Online (Sandbox Code Playgroud)
此外,模块包含会折叠重复项。所以如果你有:
@Module(includes = {BModule.class, CModule.class})
class AModule { ... }
@Module(includes = CModule.class)
class BModule { ... }
@Module
class CModule { ... }
Run Code Online (Sandbox Code Playgroud)
它将从AModule+ BModule+产生一组绑定(重复数据删除)CModule。
| 归档时间: |
|
| 查看次数: |
565 次 |
| 最近记录: |