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

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

fun test(x: Any) {
    val klazz = x::class
}

在上面的示例中,如何获得KClassx

最佳答案

reference中所述,您可以使用.javaClass.kotlin来获取对象的KClass token 。例:

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

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

09-18 21:20