2015-02-06 18 views
13

Niedawno miałem problem z kwalifikatorem @Named w Kotlin. Myślałem, że zmiana z tego:Jak używać kwalifikatora Dagger 2 @Named w Kotlin

var boldTypeface: Typeface? = null 
[Inject] set 

w tym

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

lub

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

rozwiąże mój problem. Ale tak się nie stało, nawet się nie kompiluje.

Odpowiedz

33

Musiałem zaktualizować odpowiedź, ponieważ Kotlin wiele poprawił. Teraz używam Kotlin 1.0 beta 3

Aby prawidłowo ustawić wiele adnotacje dotyczące nieruchomości trzeba użyć @field adnotacji:

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

Zauważ, że używam lateinit tutaj, więc nie ma potrzeby korzystania z pustych wpisz Typeface?

+3

Proszę, zaktualizuj przykład kodu, aby użyć bieżącej składni adnotacji '@ Inject' i' @Named ("bold") ' –

+0

@JaysonMinard. Ale co dokładnie jest z tym nie tak? Podobne podejście widzę w dokumentach Kotlina http://kotlinlang.org/docs/reference/annotations.html#annotation-use-site-targets –

+0

Już dokonałeś edycji (5 stycznia) po tym, jak mój komentarz został poprawiony. –

Powiązane problemy