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

我想获得一个变量的运行时KClass的引用。 我经历了关于类和反射的文档 ,但是文档似乎只解释了如何获得对KClass的静态引用(例如String::class String

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

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

在上面的例子中,如何获得xKClass

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

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

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

只要你在classpath中有kotlin-reflection, x::class可以正常工作。