Kotlin:相当于KClass的getClass()

在Java中,我们可以像getClass()一样通过getClass()来解析一个变量的类。 在Kotlin中,我知道something.javaClass ,但是我希望能够以类似的方式获得KClass 。 我见过的Something::class语法,但这不是我所需要的。 我需要得到一个变量的KClass。 这样的功能是否存在?

从Kotlin 1.1开始,最简单的方法就是使用类参考语法 :

 something::class 

如果您使用Kotlin 1.0,则可以通过调用.kotlin扩展属性将获得的Java类转换为KClass实例:

 something.javaClass.kotlin 

由于语言不支持直接的方式来获得这个, 现在考虑定义一个扩展方法 。

 fun<T: Any> T.getClass(): KClass<T> { return javaClass.kotlin } val test = 0 println("Kotlin type: ${test.getClass()}") 

或者,如果你喜欢一个属性:

 val<T: Any> T.kClass: KClass<T> get() = javaClass.kotlin val test = 0 println("Kotlin type: ${test.kClass}")