如何在 Kotlin 中使用 Dagger 的 2 @Named 限定符

How to use Dagger's 2 @Named qualifier in Kotlin

最近我遇到了 Kotlin 中 @Named 限定符的问题。我认为从这个改变:

var boldTypeface: Typeface? = null
[Inject] set

进入这个

var boldTypeface: Typeface? = null
[Inject Named("bold")] set

var boldTypeface: Typeface? = null
[Inject] [Named("bold")] set

会解决我的问题。但它没有,它甚至没有编译。

我不得不更新我的答案,因为 Kotlin 改进了很多。现在我正在使用 Kotlin 1.0 beta 3

要为 属性 正确设置多个注释,您必须使用 @field 注释:

@field:[Inject Named("bold")]
lateinit var boldTypeface: Typeface

注意我这里用的是lateinit所以没必要用nullable类型Typeface?