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

Ton*_*hou 3 metadata kotlin

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

hot*_*key 5

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

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

在运行时,kotlin-reflectKotlin反射API 使用元数据来重建这些属性并通过反射提供对它们的访问.