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

Reflection 如何在Kotlin中获取变量的运行时类?,reflection,kotlin,Reflection,Kotlin,我想获取对变量的运行时KClass的引用。我查阅了有关类和反射的文档,但似乎只解释了如何获取对KClass的静态引用(例如String::classforString) 我需要一个变量的运行时类。这似乎无法编译: fun test(x: Any) { val klazz = x::class } 在上面的示例中,如何获取x的KClass?如中所述,您可以使用.javaClass.kotlin获取对象的KClass标记。例如: fun printKClass(x: Any) {

我想获取对变量的运行时KClass的引用。我查阅了有关类和反射的文档,但似乎只解释了如何获取对KClass的静态引用(例如
String::class
for
String

我需要一个变量的运行时类。这似乎无法编译:

fun test(x: Any) {
    val klazz = x::class
} 
在上面的示例中,如何获取
x
KClass

如中所述,您可以使用
.javaClass.kotlin
获取对象的
KClass
标记。例如:

fun printKClass(x: Any) {
    val c = x.javaClass.kotlin
    println(c)
}

对于使用
KClass
的任何进一步操作,您还应该添加作为依赖项,因为反射功能已从
kotlin stdlib

x::class
中移出。只要在类路径中有kotlin reflect,反射就可以正常工作。

是否希望删除的类型不包含泛型信息,或者
KClass
在这个特定的用例中,是的,删除了没有通用信息的类型,但是也可以随意评论通用信息