Lombok 的 @Getter 和 @Setter 注解在编译时自动生成 getter/setter 方法:加在字段上仅作用于该字段,加在类上默认为所有非 static、非 final 字段生成;支持 AccessLevel 控制访问权限,可混用并覆盖;常与 @Data、@Value 等组合使用;需 IDE 插件和构建工具依赖支持。

用 Lombok 的 @Getter 和 @Setter 注解,就能自动生成 getter/setter 方法,不用手写,也不用 IDE 生成,编译时自动插入。
基础用法:加注解就生效
在字段或类上加 @Getter、@Setter,Lombok 会在编译阶段生成对应方法:
- 加在字段上:只为该字段生成 getter/setter
- 加在类上:为所有非 static、非 final 字段(默认)生成 getter/setter
- 两者可混用,类级注解可被字段级注解覆盖(比如某个字段只加
@Getter,那它就没有 setter)
控制访问权限和生成范围
注解支持参数定制,比如指定访问级别或排除某些字段:
-
@Getter(AccessLevel.PROTECTED)→ 生成 protected 的 getter -
@Setter(value = AccessLevel.NONE)→ 禁用该字段的 setter(常用于只读字段) - 用
@Setter(onMethod_ = @__({@Deprecated}))可为生成的 setter 加上@Deprecated
配合其他 Lombok 注解一起用
实际开发中通常组合使用,提升效率:
立即学习“Java免费学习笔记(深入)”;
-
@Data:相当于@Getter+@Setter+@ToString+@EqualsAndHashCode+@RequiredArgsConstructor,适合普通 POJO -
@Value:用于不可变对象(自动生成 private final 字段的 getter,不生成 setter) - 需要构造器时,
@AllArgsConstructor或@RequiredArgsConstructor配合使用更自然
注意点和常见问题
启用 Lombok 后需确保环境支持:
- IDE(如 IntelliJ)要安装 Lombok 插件,并开启 Enable annotation processing
- Maven/Gradle 中添加 Lombok 依赖(
compileOnly或annotationProcessor范围) - 字段名含下划线(如
user_name)时,生成的 getter 会是getUserName()(遵循 JavaBeans 规范),无需额外配置 - Lombok 不影响运行时字节码结构,调试时看不到源码中的方法,但反编译或查看 class 文件能确认已生成


















