Подтвердить что ты не робот

Как использовать квалификатор Dagger 2 @Name в Котлине

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

var boldTypeface: Typeface? = null
[Inject] set

в этот

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

или

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

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

4b9b3361

Ответ 1

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

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

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

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