Dependency injection 用匕首使用科特林

Dependency injection 用匕首使用科特林,dependency-injection,dagger,kotlin,dagger-2,Dependency Injection,Dagger,Kotlin,Dagger 2,使用Dagger将依赖项注入类(尤其是零参数构造函数类,如活动)的最佳方法是什么?匕首2是否可能改善局势 提前感谢。Dagger依赖于注释处理,据我所知,Kotlin还不支持注释处理。但他们说,这是有计划的。同时,您可以使用Dagger依赖项扩展java类,或者尝试一些基于反射的注入框架-Guice,Roboguice我有一段时间没有更新我的答案了,它已经过时了。这里还注意到@Ben的新答案,它适用于M13/M14 我决定,如果我把你们所有感兴趣的人都重定向到我的模板项目上,我会尽力跟上最新的K

使用Dagger将依赖项注入类(尤其是零参数构造函数类,如活动)的最佳方法是什么?匕首2是否可能改善局势


提前感谢。

Dagger依赖于注释处理,据我所知,Kotlin还不支持注释处理。但他们说,这是有计划的。同时,您可以使用Dagger依赖项扩展java类,或者尝试一些基于反射的注入框架-Guice,Roboguice

我有一段时间没有更新我的答案了,它已经过时了。这里还注意到@Ben的新答案,它适用于M13/M14

我决定,如果我把你们所有感兴趣的人都重定向到我的模板项目上,我会尽力跟上最新的Kotlin和Dagger 2版本


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

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

它被称为lateinit属性。摘自文件:

 class Example {
            @Inject
            lateinit var bar: Bar 
 }
简而言之,bar没有初始值设定项,但被声明为非null类型。如果在初始化之前尝试读取,将引发异常。
否则,一旦使用Dagger初始化它,它就可以用作普通属性


所有内容在中都有很好的解释,您也可以在那里查看M13版本。

您有我可以查看的示例项目吗?@cypressious我创建了一个模板项目。支持注释处理。问题在生成的“$”符号中code@EugenMartynov你设法做到了吗?Dagger 1和其他库,依赖于注释处理。如何在原始类型(如Int)上延迟初始化,kotlin中的Long