可直接在字段上加@getter或@setter实现精准控制:只读用@getter,只写用@setter,两者都需则同时标注;支持独立设置访问级别如protected、private、none;javadoc自动同步并支持--getter--/--setter--片段;final字段只生成getter,static字段默认不生成。

可以直接在字段上加 @Getter 或 @Setter 注解,实现对单个字段的精准控制,不需要影响其他字段。
字段级单独启用 getter/setter
最常见的方式就是在某个字段前直接标注注解:
- 只读字段:用
@Getter,不写@Setter,生成 get 方法但不生成 set 方法 - 只写字段(少见):用
@Setter,不写@Getter,生成 set 方法但不生成 get 方法 - 两者都需:同时标注
@Getter @Setter
例如:
public class User {
@Getter @Setter private String name; // 可读可写
@Getter private int age; // 只读,不能通过 setter 修改
private String password; // 完全不暴露,无 getter/setter
}
控制访问级别
每个字段可独立指定生成方法的可见性,比如设为 protected、private 或禁用:
-
@Getter(AccessLevel.PROTECTED)→ 生成protected String getName() -
@Setter(AccessLevel.PRIVATE)→ 生成private void setName(String name) -
@Getter(AccessLevel.NONE)→ 不生成 getter(即使类上有@Getter也会被覆盖)
典型场景:密码字段允许内部修改但禁止外部读取:
public class User {
private String username;
@Setter(AccessLevel.PRIVATE) private String password; // 外部无法调用 setPassword
@Getter(AccessLevel.NONE) private String salt; // 外部无法读取 salt
}
配合 Javadoc 自定义文档
字段上的 JavaDoc 会自动同步到生成的方法中,还能用特殊标记区分 getter/setter 的说明:
- 普通 Javadoc 中的
@return会移到 getter 方法上,@param会移到 setter 参数上 - 如需不同描述,可添加
--GETTER--和--SETTER--片段
示例:
/** * 用户邮箱地址。 * --GETTER-- * 返回脱敏后的邮箱(如 a***@b.c) * --SETTER-- * 设置完整邮箱,仅限初始化时调用 */ @Getter @Setter private String email;
注意 final 和 static 字段
Lombok 对这两类字段有明确限制:
-
final字段:可以生成 getter,但不会生成 setter(值不可变) -
static字段:默认不为 static 字段生成 getter/setter,无论是否标注注解 - 若强行加注解也不会报错,但编译后无对应方法
所以声明常量字段时无需加 @Getter,除非你真需要一个静态 getter(此时建议手动写)。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











