You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建包含@Suppress等注解的自定义@Dev注解?

如何创建包含多个内置注解的自定义注解?

当然可以实现,但原生Kotlin/Java并不直接支持让一个注解自动“包含”其他注解的组合特性,不过有几种实用的替代方案:

方案1:合并单个@Suppress的多个参数(最简单)

既然你要的是复用多个@Suppress规则,其实可以直接把所有需要抑制的警告类型放在一个@Suppress注解里,不需要自定义新注解:

@Suppress("unused", "PropertyName", "DEPRECATION")
class MyDevClass {
    // 代码逻辑
}

这种方式简洁高效,完全满足复用需求,也是日常开发中最常用的做法。

方案2:自定义注解+注解处理器(适合重度复用)

如果你一定要用@Dev这样的自定义注解,需要编写注解处理器,在编译阶段自动为标记了@Dev的元素添加对应的@Suppress注解。

步骤大致如下:

  • 先定义@Dev注解:
    @Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY)
    @Retention(AnnotationRetention.SOURCE)
    annotation class Dev
    
  • 编写注解处理器代码,扫描所有标记了@Dev的元素,自动为其生成@Suppress("unused", "PropertyName", "DEPRECATION")注解。
  • 配置处理器,让编译器在编译时执行该逻辑。

这种方式需要额外编写处理器代码,但适合需要在大量类、方法上复用该规则的场景。

方案3:Kotlin编译器插件(灵活但成本高)

如果你的项目是Kotlin项目,可以开发一个自定义编译器插件,识别@Dev注解并自动注入对应的@Suppress规则。这种方式灵活性最高,但开发和维护成本也相对较高,适合复杂的自定义注解需求。


内容的提问来源于stack exchange,提问作者Andrew Kolubov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 20:52:06