针对 Java 注解处理器开发者的参考文档
最终更新: 2025/02/06程序元素
Java | KSP 中的类似功能 | 注意事项 |
---|---|---|
|
| |
|
| |
|
| |
|
| |
|
| KSP 不将包建模为程序元素 |
|
| |
|
| |
|
| |
|
| |
|
|
类型
KSP 要求明确解析类型, 因此在解析之前, Java 中的有些功能只能通过 KSType
和对应的元素得到.
Java | KSP 中的类似功能 | 注意事项 |
---|---|---|
|
| |
|
| |
|
| |
|
| |
|
| |
|
| KSP 中没有这样的功能 |
| KSP 中没有这样的功能 | |
|
| 与 Java 中的基本类型不完全相同 |
|
| |
|
| |
|
| |
| 没有这样的功能 | Kotlin 的 每个 catch 代码段只有 1 个类型. 即使对 Java 注解处理器来说, |
|
|
杂项
Java | KSP 中的类似功能 | 注意事项 |
---|---|---|
|
| |
|
| |
|
| |
|
| |
| ||
|
| |
|
| |
| ||
|
| 有些可以在 builtin 中得到, 其他通过 |
|
| |
|
| |
|
| |
| KSP 中不需要 | |
|
| |
| ||
| ||
|
| 有些 |
|
|
细节
这部分介绍 KSP 怎样提供 Java 注解处理 API 的功能.
AnnotationMirror
Java | KSP 中的同等功能 |
---|---|
|
|
|
|
AnnotationValue
Java | KSP 中的同等功能 |
---|---|
|
|
Element
Java | KSP 中的同等功能 |
---|---|
|
|
| 未实现 |
|
|
|
|
|
|
| 通过 |
|
|
|
|
ExecutableElement
Java | KSP 中的同等功能 |
---|---|
| 未实现 |
|
|
|
|
|
|
|
|
| Kotlin 中不需要 |
|
|
| 检查父类型是不是接口 |
|
|
Parameterizable
Java | KSP 中的同等功能 |
---|---|
|
|
QualifiedNameable
Java | KSP 中的同等功能 |
---|---|
|
|
TypeElement
Java | KSP 中的同等功能 |
---|---|
|
|
|
|
|
|
| Check |
|
|
|
|
|
|
|
|
TypeParameterElement
Java | KSP 中的同等功能 |
---|---|
|
|
|
|
|
|
VariableElement
Java | KSP 中的同等功能 |
---|---|
| 未实现 |
|
|
|
|
ArrayType
Java | KSP 中的同等功能 |
---|---|
|
|
DeclaredType
Java | KSP 中的同等功能 |
---|---|
|
|
|
|
|
|
ExecutableType
note
函数的
KSType
只是一个签名, 由FunctionN<R, T1, T2, ..., TN>
群表达.
Java | KSP 中的同等功能 |
---|---|
|
|
|
|
|
|
| Kotlin 中不需要 |
|
|
IntersectionType
Java | KSP 中的同等功能 |
---|---|
|
|
TypeMirror
Java | KSP 中的同等功能 |
---|---|
| 对于基本类型, |
TypeVariable
Java | KSP 中的同等功能 |
---|---|
|
|
| 未决定. 只存在 capture, 并且需要明确的边界检查时, 才需要这个功能. |
|
|
WildcardType
Java | KSP 中的同等功能 |
---|---|
|
|
|
|
Elements
Java | KSP 中的同等功能 |
---|---|
|
|
|
|
| 未决定, 参见 Java Specification |
| 常数值, 而不是表达式 |
| 未实现 |
| 未实现 |
|
|
| 不支持包, 但可以取得包信息. KSP 中不能对包进行操作. |
| 不支持包 |
|
|
| 未实现 |
|
|
|
|
| KSP 对大多数类有基本的 |
Types
Java | KSP 中的同等功能 |
---|---|
|
|
|
|
| 不需要 |
| 未决定 |
|
|
|
|
|
|
|
|
|
|
|
|
| 根据上下文确定, 可能可以使用 |
| 不需要, 检查 |
| 在需要 |
|
|
|
|
|
|
|
|
| 不需要 |