如何从泛型方法param获取java类?

Ale*_*sky 4 generics kotlin

我尝试使用下一个方法:

fun <T> put(value: T){
    val clazz = T::class.java
}
Run Code Online (Sandbox Code Playgroud)

但有例外 Kotlin: Only classes are allowed on the left hand side of a class literal

如何从泛型参数获取类?

除了类之外还有哪些其他选项可以作为参数传递?

Kis*_*kae 6

要访问函数中的泛型类型,您需要使类型具体化.由于JVM本身不支持它,因此它仅在内联函数中可用:

inline fun <reified T : Any> put(value: T) {
    val clazz = T::class.java
}
Run Code Online (Sandbox Code Playgroud)

Any需要类型界限来防止可空类型的一些并发症.

  • 从Java的角度来看,这样的方法不存在 (3认同)