android dagger - 包含关键字的用处

问题描述:

什么是用于匕首的'include'字。例如从这里的文档是这样定义的模块:android dagger - 包含关键字的用处

@Module(
includes = { 
    DripCoffeeModule.class, 
    ExecutorModule.class 
} 
) 
public class CoffeeAppModule { 
} 

声明本模块,其是一个应用程序模块如何包括在它的另一模块?为什么?什么是有用的。你可以检查的例子here

我不明白模块注释中的includes关键字,它用于什么?

从的javadoc其具有以下定义仍然离开我困惑,有人可以提供示例来描述:

包括来自其的该模块由 附加@模块注解类。

更新:什么即时思考包含意味着,如果我有其他模块中的提供程序说module1.java然后如果我'module1.java在module2.java中包含它可以看到它的所有提供者方法和模块2的范围现在增加了,这是正确的吗?

它用于将您的图分成多个模块。所以你用你的“Root”模块创建你的ObjectGraph - 模块可能包含多个模块(然后可以再次包含模块)。这样你可以将你的模块分成逻辑组。

+0

你能提供一个小匕首代码示例吗? – j2emanue 2015-01-15 18:55:10

+0

例如:https://github.com/JakeWharton/u2020/blob/master/src/main/java/com/jakewharton/u2020/U2020Module.java – 2015-01-15 21:54:56

+0

嘿杰克,我只是没有得到什么'包括'做你的例子。这是否意味着U2020Module可以看到UiModule.class和DataModule.class的提供者方法? - 它与addsto有什么不同可能会有所帮助 – j2emanue 2015-01-26 14:56:57

我想我现在得到它。 Include就像C头文件中的'include'一样,或者当你想包含一个外部viewgroup时,它就包含在android的xml文件中。它只是意味着你在文件中包含模块方法本身。 IT只是一种分解代码的方式。所以'addsto'将它添加到你指定模块的图形中,但'includes'只是将来自该模块的代码复制到文件中。