使用Kotlin和Dagger

Kir*_*man 24 dependency-injection kotlin dagger dagger-2

使用Dagger将依赖项注入类中的最佳方法是什么,尤其是使用Dagger的零工作构造函数类(如Activities)?Dagger 2可能会改善这种情况吗?

提前致谢.

小智 32

Kotlin M13发布以来,为了支持依赖注入(如Dagger 1和2)和其他框架,特别添加了一个新属性.

它被称为lateinit属性.取自文档:

 class Example {
            @Inject
            lateinit var bar: Bar 
 }
Run Code Online (Sandbox Code Playgroud)

简而言之,bar没有初始值设定项,但声明为非null类型.如果在初始化之前尝试读取它,则会引发异常.
否则,一旦使用Dagger初始化它,它就可以用作普通属性.

语言文档中的所有内容都得到了很好的解释,您还可以查看相关于M13版本的博客文章.


Dam*_*tla 13

我暂时没有更新我的答案而且它已经过时了.此处还注意到@Ben的新答案适用于M13/M14.

决定最好将我感兴趣的所有人重定向到我的模板项目,我试着跟上最新的Kotlin和Dagger 2版本.Kotlin + Dagger 2样本

我在那里描述如何注入对象,包括多个注释等.