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

时间:2016-03-08 18:45:40

标签: reflection kotlin

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

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

String

如何在上面的示例中获得fun test(x: Any) { val klazz = x::class } 的{​​{1}}?

2 个答案:

答案 0 :(得分:11)

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

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

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

答案 1 :(得分:1)

只要你在类路径中有kotlin反射,

x::class就可以正常工作。