Как использовать квалификатор Dagger'S 2 @Named в Kotlin


Недавно у меня была проблема с @Named классификатором в Котлине. Я думал, что меняется от этого:

var boldTypeface: Typeface? = null
[Inject] set

В это

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

Или

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

Решил бы мою проблему. Но это не так, это даже не компиляция.

1 13

1 ответ:

Мне пришлось обновить свой ответ, так как Котлин значительно улучшился. Сейчас я использую Kotlin 1.0 beta 3

Чтобы правильно задать несколько аннотаций для свойства, вы должны использовать @field аннотацию:

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

Обратите внимание, что я использую lateinit здесь, поэтому нет необходимости использовать тип nullable Typeface?