附加注释类型的扩展函数

时间:2017-05-28 21:33:21

标签: annotations kotlin kotlin-extension

是否可以在带注释的类型上定义Kotlin扩展函数?

@ColorInt
fun @ColorInt Int.darken(): Int {
    return ColorUtils.blendARGB(this, Color.BLACK, 0.2f)
}

替代形式:

@ColorInt
fun (@ColorInt Int).darken(): Int {
    return ColorUtils.blendARGB(this, Color.BLACK, 0.2f)
}

这将对应于以下静态功能:

@ColorInt
fun darken(@ColorInt color: Int): Int {
    return ColorUtils.blendARGB(color, Color.BLACK, 0.2f)
}

我认为可能还没有使用Kotlin,但是可以在以后的Kotlin版本中添加该功能吗?

旁注: 同样的问题也适用于@IntDef@StringDef@[resource type]Res

1 个答案:

答案 0 :(得分:16)

是的,你可以。使用以下语法:

@ColorInt
fun @receiver:ColorInt Int.darken(): Int {
    return ColorUtils.blendARGB(this, Color.BLACK, 0.2f)
}

有关注释使用网站目标的更多信息:http://kotlinlang.org/docs/reference/annotations.html#annotation-use-site-targets