web-dev-qa-db-fra.com

Annotations Kotlin sur les propriétés déléguées

Dans Kotlin, existe-t-il un moyen de définir une annotation sur une propriété déléguée (ex: lazy)?

class MyActivity: Activity() {

    @ColorInt
    val textColor: Int by lazy { ContextCompat.getColor(this, R.color.someColor) }
    ...

Le IDE jette une erreur sur le @ColorInt annotation:

Cette annotation ne s'applique pas à la cible "propriété de membre avec délégué"

14
triad

Vous pouvez annoter le délégué avec @delegate.

@delegate:ColorInt
val textColor: Int by lazy { ... }

De la documentation :

  • delegate (le champ stockant l'instance déléguée pour une propriété déléguée).
16
mkobit

Si l'annotation du getter vous suffit, vous pouvez utiliser annotation use-site target , @get:ColorInt:

@get:ColorInt
val textColor: Int by lazy { ... }
13
hotkey