Kotlin类常量池中的疯狂UTF-8条目

Chr*_*ian 2 java class class-constants kotlin

当检查来自Kotlin源的.class文件的内容(只是“ Hello World”,别无其他)时,我在常量池中发现了一个UTF-8字符串,该字符串(a)不在任何地方使用,并且(b)内容奇怪。

能告诉我这是什么吗?

在此处输入图片说明

Mih*_*x64 5

这是kotlin.Metadata注释的内容。它使用Protobuf编码,并由编译器和Kotlin-Reflect共同使用。

Kotlin使用String而不是byte[]因为类格式在存储数组时非常浪费。

当您不使用Kotlin-Reflect时,元数据未使用,可以由ProGuard删除。