为什么Kotlin在Kotlin类文件中保存MetaData?

我们将Java文件转换为Kotlin文件,然后编译为类文件。 生成的类比原始的Java类文件大。 在Kotlin类文件中,我们在每个类中找到元数据。 为什么Kotlin存储这个元数据?

Kotlin中的代码的某些方面不能用纯Java字节码(例如,可空性,主要构造函数, internal可见性, lateinit修饰符,属性委托等)来表示。 相反,它们被序列化并作为元数据存储在类中。

当您使用Kotlin库的JAR发行版时,编译器将解析元数据以发现这些Kotlin特定属性,以便将该库用作具有所有可用功能的Kotlin工件。

在运行时, kotlin-reflect reflection(Kotlin反射API)使用元数据重建这些属性,并通过反射提供对它们的访问。