如何从泛型方法param获取java类?
我尝试使用下一个方法:
fun <T> put(value: T){ val clazz = T::class.java }
但是有例外Kotlin: Only classes are allowed on the left hand side of a class literal
如何从泛型参数获取类?
什么是除了类的其他选项可以作为参数传递?
要访问函数中的泛型类型,需要使类型具体化 。 由于这不是JVM本机支持的,所以它只能在内联函数中使用:
inline fun <reified T : Any> put(value: T) { val clazz = T::class.java }
Any
类型的绑定是必需的,以防止可空类型的一些复杂性。
固定的
fun <T: Any> put(value: T){ val clazz = value.javaClass }