有没有办法从一个普通的Kotlin类中识别一个Kotlin数据类?

有没有办法从一个普通的Kotlin类中识别一个Kotlin数据类? 像使用反射也许?

从1.1开始,这个类有一个isData属性

MyDataClass::class.isData 

您不能通过反射读取data注释,因为它具有默认保留( CLASS )。

你可以尝试使用一些启发式方法,比如检查它是否包含下面的方法:

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

但是请注意,这是一些实现细节,将来可能会改变。