KSP中“符号”是什么意思

Jag*_*paw 0 annotations kotlin kapt kotlin-symbol-processing

目前我正在研究KSP(Kotlin Symbol Processing),我很好奇KSP中的“Symbol”是什么意思。

在与 KAPT 进行比较时,它说“为了运行未经修改的 Java 注释处理器,KAPT 将 Kotlin 代码编译成 Java 存根,保留 Java 注释处理器关心的信息。为了创建这些存根,KAPT 需要解析 Kotlin 程序中的所有符号”。

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

bro*_*oot 5

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

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

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