编写 Kotlin 编译器插件:自定义注解处理器生成源码
从零构建一个 Kotlin Compiler Plugin,在编译期间扫描注解并自动生成委托代码。 · 难度:入门 · +10XP
编写 Kotlin 编译器插件:自定义注解处理器生成源码
Kotlin 编译器插件 (KCP) 相比 KAPT 拥有更深的编译期介入能力,可以修改 AST、生成 IR 或直接影响类型系统。本教程将创建一个最简单的插件,它识别 @Builder 注解并在伴生对象中自动生成构建器函数。主要涉及 SubpluginOption、ClassBuilderInterceptor 与 SyntheticAccessorGeneration 的使用。最终你会理解为何 KCP 比 KSP 更适合需要修改已有类结构的场景。
// 假设有注解
@Retention(AnnotationRetention.SOURCE)
@Target(AnnotationTarget.CLASS)
annotation class Builder
// 插件处理后自动生成
@Builder
data class User(val name: String, val age: Int) {
companion object {
fun builder() = UserBuilder()
}
}
class UserBuilder {
var name: String = ""
var age: Int = 0
fun build() = User(name, age)
}