我想限制可以调用哪个常量值扩展功能。例如如下功能:
@IdRes
fun <T : View> Int.find() = findViewById<T>(this)
如果这是通过真实ID调用的,那很好:
R.id.someView.find<TextView>() // ok
但这会导致编译错误:
42.find<TextView>() // should be compile error
Kotlin是否支持注释扩展接收器?
答案 0 :(得分:1)
如the documentation中所述,您可以使用以下语法:
fun @receiver:IdRes <T : View> Int.find() = ...
但是,请注意,Kotlin编译器不了解Android批注的语义,因此对它们的不正确使用绝不会导致编译错误。充其量是失败的皮棉检查。