有没有办法从常规 Kotlin class 中识别 Kotlin 数据 class?

Is there a way to identify a Kotlin data class from a regular Kotlin class?

有没有办法从常规 Kotlin class 中识别 Kotlin 数据 class?也许喜欢使用反射?

自 Kotlin 1.1 起在 KClass 上使用 isData 属性。 (docs)

在 Kotlin 1.1 之前,您可以尝试使用一些启发式方法,比如检查它是否包含下一个方法:

  • public final copy
  • public final component{N}
  • public static copy$default

请注意,这些实施细节将来可能会发生变化。

从 1.1 开始,class

上有一个 isData 属性
MyDataClass::class.isData