我不确定区别是什么?我什么时候应该使用哪个?
答案 0 :(得分:9)
includes
表示当前模块由哪些模块组成。例如,它对于静态聚合所有模块非常有用:
@Module(
includes = { AndroidModule.class, NetworkModule.class, StorageModule.class }
)
public class RootModule() {
}
// other file
objectGraph = ObjectGraph.create(new RootModule());
而不是动态:
objectGraph = ObjectGraph.create(
new AndroidModule(),
new NetworkModule(),
new StorageModule());
因此,充分利用编译时图验证。
addsTo
特别涉及父子模块的关系。它表示模块是某个模块的扩展,用作.plus()
参数。例如。有两个模块:
@Module(
//...
)
public class ParentModule() {
//...
}
@Module(
addsTo = { ParentModule.class },
//...
)
public class ChildModule () {
//...
}
此配置意味着在parentGraph = ObjectGraph.create(new ParentModule());
之后,您可以在代码中的某处执行childGraph = parentGraph.plus(new ChildModule());
来创建扩展的,通常是短命的子图。