web-dev-qa-db-ja.com

委任されたプロパティのKotlinアノテーション

Kotlinで、委任されたプロパティにアノテーションを定義する方法はありますか(例:lazy)?

class MyActivity: Activity() {

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

IDEは@ColorIntアノテーションでエラーをスローします:

この注釈は、ターゲット「デリゲートを持つメンバープロパティ」には適用されません

14
triad

デリゲートに@delegateで注釈を付けることができます。

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

ドキュメント から:

  • delegate(委任されたプロパティのデリゲートインスタンスを格納するフィールド)。
16
mkobit

ゲッターに注釈を付けるだけで十分な場合は、 annotation use-site target@get:ColorInt

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