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

类级别@Getter的onMethod_注解失效问题求助

解决Lombok类级别@Getter自动生成带自定义注解Getter失效的问题

先确认自定义注解的元注解配置

你得保证@CustomAnnotation本身的元注解是对的,Lombok才能把它加到生成的Getter方法上:

@Target(ElementType.METHOD) // 必须包含METHOD,不然Lombok没法把注解应用到方法上
@Retention(RetentionPolicy.RUNTIME) // 至少得是SOURCE或CLASS级别,让Lombok能处理到
public @interface CustomAnnotation {
}

修正类级别@Getter的写法

Lombok 1.18.x之后用onMethod_是对的,但要注意注解的括号格式——哪怕注解没有属性,也得加上空括号,不然Lombok可能解析失败:

@Getter(onMethod_ = {@CustomAnnotation()}) // 别漏了大括号和空括号
public class YourClass {
    private String name;
    private Integer age;
}

要是你的注解有属性,就这么写:

@Getter(onMethod_ = {@CustomAnnotation(desc = "用户名")})

检查IDE的Lombok配置和插件版本

  • 不管用IntelliJ还是Eclipse,先把Lombok插件更到最新版,得适配Java 21和你用的1.18.34版本
  • IntelliJ里要打开Enable annotation processing(路径:Settings → Build, Execution, Deployment → Compiler → Annotation Processors)
  • Eclipse的话,确认Lombok已经正确装到IDE里,注解处理器也开了

临时方案:降级Lombok版本

要是上面的方法都不管用,可以先降到Lombok 1.18.28试试——不少用户说在Java 21环境下,这个版本对类级别onMethod_的支持更稳,等Lombok官方后续修复了再升回去。

进阶替代:自定义Lombok处理器

如果前面的办法都不行,还可以自己写个Lombok扩展处理器,批量给Getter加注解。不过这个需要点Lombok扩展的经验,步骤大概是:

  1. 写自定义的Lombok处理器类
  2. 把处理器注册到项目里
  3. 用自定义注解触发,自动给所有Getter加上@CustomAnnotation

内容的提问来源于stack exchange,提问作者Sōōng

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 11:10:55