我创建了扩展方法:
@Suppress("UNCHECKED_CAST")
operator fun <T : View> View.get(@IdRes id:Int): T =
this.findViewById(id) as T
该方法的主要用途:
class A {
lateinit var text: TextView
fun init(view:View) {
text = view[R.id.text]
}
}
这很好用,但是当我尝试不使用变量时:
fun test() {
view[R.id.text].visibility = View.GONE // error
}
错误:
Type inference failed: Not enough information to infer parameter T in
operator fun <T : View> View.get(id: Int): T
Please specify it explicitly.
如果我在 java 中编写模拟代码,则无需直接指定 View 类型即可使用 View 类的方法。
在科特林有可能吗?也许以某种方式对泛型类型的签名进行一些更改?