Lombok @Getter @Setter 注解: 简化属性操作
一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 - 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/
截止目前, 星球 内专栏累计输出 80w+ 字,讲解图 3365+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2700+ 小伙伴加入学习 ,欢迎点击围观
Lombok 提供的 @Getter
和 @Setter
注解是最常用的注解之一,主要用于自动生成类的 getter
和 setter
方法。这些方法可以大大减少手动编写代码的工作量,让代码更简洁、更易读。
基本用法
@Getter
:自动为字段生成 getter 方法。@Setter
:自动为字段生成 setter 方法。
这两个注解可以单独使用,也可以同时使用。可以直接加在类上,让类中的所有字段都生成 getter
和 setter
方法;也可以加在具体字段上,仅生成该字段的 getter
或 setter
。
示例代码
import lombok.Getter;
import lombok.Setter;
public class User {
@Getter @Setter
private String name;
@Getter
private int age;
// 无需手动编写 getter 和 setter 方法
}
上面的代码会自动生成如下方法:
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
// age 字段没有设置 @Setter 注解,因此没有生成 getter 方法
类级别注解
可以在类上直接使用 @Getter
和 @Setter
,为类中的所有字段生成 getter
和 setter
方法:
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class User {
private String name;
private int age;
}
此时,User
类中的所有字段都会自动生成 getter
和 setter
方法。
控制访问级别
Lombok 的 @Getter
和 @Setter
支持控制生成方法的访问级别,例如可以为某些字段生成 protected
或 private
的 getter/setter
。可以通过 AccessLevel
参数来设置访问级别:
import lombok.Getter;
import lombok.Setter;
import lombok.AccessLevel;
public class User {
@Getter(AccessLevel.PUBLIC)
@Setter(AccessLevel.PROTECTED)
private String name;
@Getter(AccessLevel.PRIVATE)
private int age;
}
在这个例子中:
name
字段的 getter 方法是public
的,setter 方法是protected
的。age
字段的 getter 方法是private
的,因此只能在类内部访问。
AccessLevel
提供了以下选项:
PUBLIC
:公共级别(默认);PROTECTED
:受保护级别;PACKAGE
:包访问级别;PRIVATE
:私有级别;MODULE
(Java 9+):模块级别;
使用场景
@Getter
和 @Setter
通常用于以下场景:
- 数据传输对象(DTO):在需要封装数据的类中,自动生成
getter
和setter
可以简化代码。 - 实体类:在数据库实体类中(如使用 JPA 时),使用
getter
和setter
可以方便地进行数据操作。 - 简单模型类:在只存储数据、不包含业务逻辑的模型类中,大量
getter
和setter
是常见需求,使用 Lombok 可以提高开发效率。
总结
Lombok 的 @Getter
和 @Setter
注解简化了数据类的开发,自动生成必要的访问方法,避免了手动编写重复代码。它们非常适合用于 DTO、简单实体类和模型类中,使代码更加简洁和易于维护。