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 示例项目


原始标题:The getClass() Equivalent in Kotlin