如何在Android中创建类似Parcelable的支持自动生成模板实现的自定义接口
自定义接口实现Android Studio自动生成样板代码方案
Android Studio 内置的 Parcelable 自动生成能力基于 IntelliJ 平台的代码操作API实现,你可以通过两种主流方案实现相同的自动补全效果:
方案1:开发IDE插件(完全复刻Parcelable交互体验)
该方案可以实现和Parcelable完全一致的linter提示、点击灯泡唤出补全选项的交互,适合团队内部统一IDE使用场景:
- 第一步:明确自定义接口的规范
先定义好你的基础接口,以及需要生成的样板代码结构,比如需要的重写方法、构造方法参数、伴生对象结构等,示例自定义接口如下:// 自定义接口示例 interface MyPersistable { fun writeToStorage(storage: Storage, flags: Int) fun describeSize(): Int companion object CREATOR : MyPersistableCreator<MyPersistable> } interface MyPersistableCreator<T> { fun createFromStorage(storage: Storage): T fun newArray(size: Int): Array<T?> } - 第二步:实现上下文操作(Intention Action)
基于IntelliJ SDK开发,继承AbstractIntentionAction类:- 重写
isAvailable方法:判断当前光标所在的类是否实现了你的自定义接口,且未补全要求的所有成员,符合条件则在灯泡菜单中展示你的补全选项 - 重写
invoke方法:通过IntelliJ的PSI(程序结构接口)读取当前类的所有成员字段,按照预设模板动态生成对应的构造方法、重写方法、伴生对象,直接插入到当前类的代码中
- 重写
- 第三步:绑定Lint快速修复
自定义Android Lint检查规则,扫描项目中所有实现了你的自定义接口的类,如果未补全要求的成员则抛出Lint错误提示,同时将你开发的Intention Action绑定为该错误的快速修复选项即可。
方案2:KSP注解生成(无需IDE插件,通用性更强)
如果不想适配不同版本的Android Studio,也可以用Kotlin符号处理(KSP)实现编译期自动生成样板代码:
- 给你的自定义接口添加专用注解作为扫描标记,也可以直接用接口本身作为扫描依据
- 开发KSP处理器,扫描项目中所有实现了你的自定义接口的类,读取类的字段信息,按照预设模板自动生成对应的样板代码(可以生成接口实现的扩展方法,也可以生成原类的子类补全所有实现逻辑)
- 使用者只需要在项目中引入你的KSP依赖并配置KSP插件,编译时就会自动生成所有样板代码,不需要手动触发,且支持所有兼容KSP的IDE。
内容的提问来源于stack exchange,提问作者Abahu
相关产品推荐
相关产品推荐

