"Symbol"在KSP中是什么意思

What does "Symbol" mean in KSP

目前正在研究KSP(Kotlin Symbol Processing),很好奇KSP.

中的“Symbol”是什么意思

当谈到与 KAPT 的比较时,它说“对于 运行 Java 未修改的注释处理器,KAPT 将 Kotlin 代码编译成 Java 存根,这些存根保留了 Java 注释处理器关心。要创建这些存根,KAPT 需要解析 Kotlin 程序中的所有符号。"

不知道“Kotlin程序中的所有符号”到底是什么意思?

我将“符号”理解为接口、类、函数、属性等的声明。它不包括正文或代码本身,仅包括 API 项对其他人可见。

这个术语不是 Kotlin 特有的。我在维基百科上找不到“符号”的任何定义,但例如本机库也包含符号表。

在此特定上下文中,这意味着 KAPT 必须在 Kotlin 代码中创建所有此类符号的完整列表,并在 Java 中生成它们的等价物,以便注释处理器可以处理它们。这是非常浪费的,因为我们在 Java 中重新创建 Kotlin 代码结构只是为了在几秒钟后将其丢弃并替换为真正的编译代码。