如何在Kotlin中使用Dagger的2 @Named资格赛

Dam*_*tla 15 android kotlin dagger-2

最近我@Named在Kotlin 遇到了资格赛问题.我以为从这个改变:

var boldTypeface: Typeface? = null
[Inject] set
Run Code Online (Sandbox Code Playgroud)

进入这个

var boldTypeface: Typeface? = null
[Inject Named("bold")] set
Run Code Online (Sandbox Code Playgroud)

要么

var boldTypeface: Typeface? = null
[Inject] [Named("bold")] set
Run Code Online (Sandbox Code Playgroud)

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

Dam*_*tla 35

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

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

@field:[Inject Named("bold")]
lateinit var boldTypeface: Typeface
Run Code Online (Sandbox Code Playgroud)

请注意,我在lateinit这里使用所以不需要使用可空类型Typeface?

  • 您可以更新代码示例以使用当前注释语法`@Inject`和`@Named("bold")` (3认同)