用匕首使用Kotlin

使用Dagger向类中注入依赖关系的最好方法是什么,特别是像Dagger这样的零参数构造函数类,比如Activities? 匕首2可能会改善情况吗?

提前致谢。

Kotlin M13发布以来,为了支持dependency injection (如Dagger 1和2)和其他框架,特别增加了一个新属性。

它被称为lateinit属性。 从文档中获取:

class Example { @Inject lateinit var bar: Bar } 

简而言之, bar没有初始化,但是被声明为非nulltypes。 如果在初始化之前尝试读取它,则会引发exception。
否则,一旦使用匕首进行初始化,它可以作为一个正常的属性。

一切都在语言文档中得到很好的解释,你也可以在那里查看相关的M13版本的博文 。

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

如果我把所有感兴趣的东西都重定向到我的模板项目上,那么最好的做法是尽量跟上最新的Kotlin和Dagger 2版本。 Kotlin + Dagger 2样本

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

匕首依赖于注释处理,据我所知,这在Kotlin中还不被支持。 但他们说,这是计划。 同时,您可以扩展与Dagger依赖关系的Java类,或者尝试一些基于reflection的注入框架 – Guice,Roboguice