Kotlin 填坑记之 Metadata

1 · Johnson Lee · Oct. 29, 2021, midnight
Summary
最近用 KAPT 来生成 Kotlin 代码,遇到了一个头疼的问题,生成的 Kotlin 代码需要调用源 Kotlin 代码中被 Annotation 标注的属性,理论上讲,直接用 . 操作符来调用属性不就行了吗?然而,事情并没有想象的那么简单。 Kotlin Property 在 Kotlin 中,Property 在 JVM 层面既有可能是一个字段,也有可能是一个方法,取决于在属性上有没有其它 JVM 相关的注解,例如在下面的例子中: 1 2 3 4 object Data { val value = "Hello, world!" } value 作为 __Property__,在 JVM 层面对外公开的 API 其实是 getValue(): String ,但是,在下面的例子中: 1 2 3 4 5 object Data { val value = "Hello, world!" } value 在 JVM 层面对外公开的 API 其实是一个 static 字段,对于生成的 Kotlin 代码中,如果要调用这个 va...