0

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

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

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

4

1 回答 1

2

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

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

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

于 2021-10-30T10:53:11.007 回答