如何在Kotlin中获取变量的运行时类?

Kre*_*sek 4 reflection kotlin

我想获得对变量的运行时KClass的引用.我浏览了有关类和反射的文档,但文档似乎只解释了如何获取对KClass的静态引用(例如String::classfor String)

我需要一个变量的运行时KClass.这似乎没有编译:

fun test(x: Any) {
    val klazz = x::class
} 
Run Code Online (Sandbox Code Playgroud)

怎样才能获得KClassx在上面的例子?

hot*_*key 11

参考文献中所述,您可以使用.javaClass.kotlin获取KClass对象的标记.例:

fun printKClass(x: Any) {
    val c = x.javaClass.kotlin
    println(c)
}
Run Code Online (Sandbox Code Playgroud)

对于任何进一步的操作KClass,您还应该将kotlin-reflect添加为依赖项,因为反射功能已移出kotlin-stdlib.