Jir*_*ire 74 java class kotlin
在Java中,我们可以通过getClass()
like 来解析变量的类something.getClass()
.在Kotlin,我知道something.javaClass
哪个很好,但我希望能够以KClass
类似的方式获得.我已经看过Something::class
语法,但这不是我需要的.我需要得到一个变量的KClass.这样的功能是否存在?
Ale*_*lov 109
自Kotlin 1.1以来实现这一目标的最简单方法是类参考语法:
something::class
Run Code Online (Sandbox Code Playgroud)
如果使用Kotlin 1.0,则可以通过调用.kotlin
扩展属性将获取的Java类转换为KClass实例:
something.javaClass.kotlin
Run Code Online (Sandbox Code Playgroud)
Kas*_*aar 12
这是我的解决方案
val TAG = javaClass.simpleName
Run Code Online (Sandbox Code Playgroud)
使用 javaClass.simpleName 您可以获得您的类名。另外,上面的示例对于 Android 开发人员在类顶部声明为用于日志记录目的的实例变量非常有用。
dhe*_*man 10
编辑:请参阅上面的评论,以及亚历山大的回答.这个建议最初是针对Kotlin 1.0的,现在似乎已经过时了.
由于该语言不支持直接获取此方法,因此请考虑现在定义扩展方法.
fun<T: Any> T.getClass(): KClass<T> {
return javaClass.kotlin
}
val test = 0
println("Kotlin type: ${test.getClass()}")
Run Code Online (Sandbox Code Playgroud)
或者,如果您喜欢房产:
val<T: Any> T.kClass: KClass<T>
get() = javaClass.kotlin
val test = 0
println("Kotlin type: ${test.kClass}")
Run Code Online (Sandbox Code Playgroud)