Kotlin通用范围为Class
以下generics不能编译。 这里的语义错误是什么?
函数调用
start(MainActivity.javaClass) // <== Doesn't compile
方法定义
// Definition public fun start(activityClass: Class) { startActivity(Intent(this, activityClass)) }
编译器错误
Error:(43, 9) Type parameter bound for T in fun start(activityClass: java.lang.Class): kotlin.Unit is not satisfied: inferred type com.mobsandgeeks.hellokotlin.MainActivity. is not a subtype of android.app.Activity
javaClass
已被弃用。 用这个代替:
val i = Intent(this@Activity, Activity::class.java) startActivity(i)
使用javaClass
而不是MainActivity.javaClass
另外一个选择:
inline public fun start() { startActivity(Intent(this, javaClass())) } start()
它唯一的办法是我这样做:
val intent = Intent(this, NextActivity::class.java) startActivity(intent)
没有其他解决方案已经工作,包括使用javaClass