翻别人的项目源码,实体类里一个 getter 都没有,编译却不报错,接口返回数据也正常。鼠标移到字段上一看,IDEA 左边栏有个绿色小圆圈,点开才发现方法体在编译结果里。这就是 Lombok 的 @Getter 在起作用,第一次遇到多半会愣一下。
生成方法的规则
规则很简单:字段 name 对应 public String getName(),get 加首字母大写。boolean 字段例外,active 生成的是 isActive(),前缀是 is。static 字段会被跳过。注解可以标在字段上只管一个字段,也可以标在类上,让所有非静态字段都生成。
import lombok.Getter; @Getter public class User { private Long id; private String name; private boolean active; }编译后的 class 文件里就有这几个方法,用 javap 反编译能直接看到。类上加了 @Getter 又想让某个字段不生成,给它单独标 @Getter(AccessLevel.NONE),访问级别也能改,比如 AccessLevel.PROTECTED 生成 protected 方法,默认是 public。
引入和常见的坑
Maven 加 org.projectlombok 的依赖,scope 写 provided。IDEA 新版自带支持,老版本要装 Lombok 插件,另外必须开注解处理:Settings → Build, Execution, Deployment → Compiler → Annotation Processors,勾上 Enable annotation processing,不然整个项目飘红。JDK 16 以上跑老版本 Lombok 会编译报错,升级到 1.18.x 的较新版本一般就好。
两个场景别硬用:getter 里要做脱敏、格式化这类逻辑时,手写更直观;调试时想进 getter 打断点,注解生成的代码断点打不进去。团队规范如果要求显式写方法,就按规范来。@getter 这类注解省的是重复劳动,字段的访问方式在代码评审里还是会被认真看。