Kotlin:相当于 kClass 的 getClass()
在Java中,我们可以通过类似.在Kotlin中,我知道哪个很好,但我希望能够以类似的方式获得。我已经看到了语法,但这不是我需要的。我需要获取变量的 KClass。是否存在此类功能?getClass()
something.getClass()
something.javaClass
KClass
Something::class
在Java中,我们可以通过类似.在Kotlin中,我知道哪个很好,但我希望能够以类似的方式获得。我已经看到了语法,但这不是我需要的。我需要获取变量的 KClass。是否存在此类功能?getClass()
something.getClass()
something.javaClass
KClass
Something::class
自 Kotlin 1.1 以来,实现此目的的最简单方法是类引用语法:
something::class
如果使用 Kotlin 1.0,则可以通过调用扩展属性将获得的 Java 类转换为 KClass 实例:.kotlin
something.javaClass.kotlin
编辑:请参阅下面的评论和亚历山大的答案。这个建议最初是针对Kotlin 1.0的,现在似乎已经过时了。
由于该语言尚不支持直接获取此方法的方法,因此请考虑现在定义一个扩展方法。
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}")