委托属性的Kotlin注释

tri*_*iad 14 android annotations kotlin

在Kotlin中,有没有办法在委托属性上定义注释(例如:) lazy

class MyActivity: Activity() {

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

IDE在@ColorInt注释处抛出错误:

此注释不适用于具有委托的目标'成员属性'

mko*_*bit 15

您可以使用注释来委托代理@delegate.

@delegate:ColorInt
val textColor: Int by lazy { ... }
Run Code Online (Sandbox Code Playgroud)

文档:

  • delegate (存储委托属性的委托实例的字段).

  • 恐怕这不是OP想要的:在本例中注释“@delegate:”目标将引用存储“Lazy”实例的字段,而我相信应该标记的是“textColor”的“Int”与“@ColorInt”。 (2认同)

hot*_*key 11

如果注解的getter对你来说是足够的,你可以使用注解使用站点内的目标,@get:ColorInt:

@get:ColorInt
val textColor: Int by lazy { ... }
Run Code Online (Sandbox Code Playgroud)