android - Kotlin 注释扩展函数的接收者

标签 android kotlin annotations kotlin-extension

我想限制可以调用哪些常量值扩展函数。例如函数如下:

@IdRes
fun <T : View> Int.find() = findViewById<T>(this)

如果这是在真实身份上调用的,没问题:

R.id.someView.find<TextView>() // ok

但这应该会导致编译错误:

42.find<TextView>() // should be compile error

Kotlin 是否支持注释扩展接收器?

最佳答案

the documentation 中所述,您可以使用以下语法:

fun @receiver:IdRes <T : View> Int.find() = ...

但是请注意,Kotlin 编译器并不知道 Android 注释的语义,因此它们的不正确使用绝不是编译错误;这充其量只是一次失败的 lint 检查。

关于android - Kotlin 注释扩展函数的接收者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51156576/

相关文章:

android - Nexus One/Android 上的本地主机

android - Kotlin/RecyclerView : scrollToPositionWithOffset Not Showing Up

java - Spring JPA hibernate 副本

c# - 自定义数据注释 ASP.NET MVC C#

android - 在excel中复制具有范围的行公式

android - TableLayout 中的行间距

kotlin - 在 Kotlin 中获取变量的类型

java - 我可以使用 xml 连接 spring @stereotype bean吗

java - Android ListView setOnItemClickListener 不工作

kotlin - 在 Kotlin 多平台多模块项目中使用 Gradle 6.5 链接依赖项