kotlin.MetaData中保存的数据格式是否在任何地方记录?

我很想知道添加到每个Kotlin类的MetaData注释中保存了哪些数据。

但是大多数领域都没有比这更多的细节

“自定义格式的元数据,不同类型的格式可能不同(甚至不存在)。”

https://github.com/JetBrains/kotlin/blob/master/core/runtime.jvm/src/kotlin/Metadata.kt

是否有参考解释如何解释这些数据?

kotlin.Metadata包含有关Kotlin符号的信息,例如它们的名称,签名,类型之间的关系等。这些信息中的一些已经存在于类文件的JVM签名中,但很多不是,因为Kotlin JVM类文件无法正确表示的特定事物:类型为可空,可变/只读集合接口,声明站点方差等。

没有采取任何具体行动来公开在这个注解中编码的数据模式,因为对于大多数用户来说,在运行时需要这样的数据来反省一个程序, Kotlin反射库为此提供了一个很好的API。

如果您需要检查Kotlin特定的东西,而这些东西不是通过反射API公开的,或者您只是对其中存储的其他东西感兴趣 ,那么您可以查看kotlinx.reflect.lite的实现。 它是一个轻量级库,其核心是protobuf生成的模式解析器。 目前没有太多的支持,但是有可用的模式来读取您需要的任何其他数据。