如何解决kotlin中通用扩展方法的签名,以解决kotlin中的“类型推断失败”
我已经创建了扩展方法:
@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类型。
在kotlin中可能吗? 也许在某种程度上对泛型的签名做了一些改变?