@Builder
注解是 Lombok 提供的一个注解,主要作用如下:
主要功能
-
自动生成 Builder 模式代码
- 自动生成静态
builder()
方法 - 为每个字段生成对应的 setter 方法(返回 builder 对象本身)
- 生成
build()
方法用于创建最终对象实例
- 自动生成静态
-
简化对象创建过程
- 避免手动编写冗长的构造函数
- 提高代码可读性和维护性
- 支持链式调用方式创建对象
@Builder内部做了什么
@Builder
public class User {
private String username;
private String password;
}
编译后
public class User {
private String username;
private String password;
User(String username, String password) {
this.username = username;
this.password = password;
}
public static User.UserBuilder builder() {
return new User.UserBuilder();
}
public static class UserBuilder {
private String username;
private String password;
UserBuilder() {}
public User.UserBuilder username(String username) {
this.username = username;
return this;
}
public User.UserBuilder password(String password) {
this.password = password;
return this;
}
public User build() {
return new User(this.username, this.password);
}
public String toString() {
return "User.UserBuilder(username=" + this.username + ", password=" + this.password + ")";
}
}
}
使用
// builder模式初始化
User user = User.builder().username("xxxx").password("ssss").build()
vs
// 手动编写冗长的构造函数
User user = new User();
user.setUsername("xxxxx");
user.setPassword("sssss");