1. 概述
在 Java 中,我们通常通过调用对象的 getClass()
方法来获取其运行时的 Class<T>
类型信息。而在 Kotlin 中,由于语言设计的不同,获取类类型的方式也略有差异。本文将介绍在 Kotlin 中等效于 Java getClass()
的做法。
2. Kotlin 中的等效实现
从 Kotlin 1.1 开始,我们可以使用类引用(class reference)语法来获取 Kotlin 的 KClass<T>
类型:
val aString = "42"
val stringType = String::class
assertEquals(stringType, aString::class)
如上所示,::class
可以作用于类名本身,也可以作用于对象实例。这种方式是目前推荐使用的方式。
⚠️注意:在 Kotlin 1.1 之前,通常使用 javaClass
扩展属性并结合 .kotlin
属性来获取 KClass
:
val aString = "42"
val type = aString.javaClass.kotlin
assertEquals("String", type.simpleName)
虽然这种方式仍然可用,但在新版本中推荐优先使用 ::class
。
3. 总结
本文介绍了在 Kotlin 中如何获取类的类型信息。✅ 对于 Kotlin 1.1 及以上版本,推荐使用 ::class
获取 KClass<T>
类型。这种方式简洁、直观,也更符合 Kotlin 的语言风格。
如需查看完整示例代码,请访问:GitHub 示例项目