如何在Kotlin中获得变量的运行时类?
我想获得一个变量的运行时KClass的引用。 我经历了关于类和反射的文档 ,但是文档似乎只解释了如何获得对KClass的静态引用(例如String::class
String
)
我需要一个变量的运行时KClass。 这似乎并没有编译:
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-reflect
库作为依赖项,因为反射功能已经被移出kotlin-stdlib
。
只要你在classpath中有kotlin-reflection, x::class
可以正常工作。