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}")