kotlin class' 常量池中疯狂的 UTF-8 条目

Crazy UTF-8 entry in a kotlin class' constant pool

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

谁能告诉我这是什么?

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

使用

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

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