java Kotlin:相当于KClass的getClass()
在Java中,我们可以通过类似getClass()
的something.getClass()
解析变量的类。在科特林,我知道something.javaClass
这很好,但我希望能够以类似的方式获得KClass
。我见过Something::class
语法,但这不是我需要的。我需要得到一个变量的KClass。这种功能存在吗
你可以在下面搜索框中键入要查询的问题!
在Java中,我们可以通过类似getClass()
的something.getClass()
解析变量的类。在科特林,我知道something.javaClass
这很好,但我希望能够以类似的方式获得KClass
。我见过Something::class
语法,但这不是我需要的。我需要得到一个变量的KClass。这种功能存在吗
# 1 楼答案
自Kotlin 1.1以来,实现这一点的最简单方法是class reference syntax:
如果使用Kotlin 1.0,可以通过调用
.kotlin
扩展属性将获得的Java类转换为KClass实例:# 2 楼答案
这是我的解决方案
用javaClass。simpleName您可以获得您的类名。此外,上面的示例对于android开发人员非常有用,可以在类的顶部声明为实例变量,用于日志记录
# 3 楼答案
自Kotlin 1.5.21(org.jetbrains.Kotlin:Kotlin stdlib:1.5.21)以来
val TAG = javaClass.simpleName will work no more!
错误“信息不足,无法推断类型变量T”
你现在可以试试
YourClassName::class.java.simpleName
# 4 楼答案
编辑:见下面的评论和上面亚历山大的回答。这个建议最初是针对Kotlin 1.0的,现在似乎已经过时了
由于该语言还不支持直接获取此信息的方法,consider defining an extension method for now
或者,如果你更喜欢一处房产: