目录
一、创建类
java
@Builder
public class User {
private final String name;
private final int age;
@Builder.Default private String address = "Unknown";
@Builder.Default private String email = "N/A";
}
二、用法
(1) 链式调用:可读性高
java
User user = User.builder()
.name("Alice")
.age(25)
.address("New York")
.email("alice@example.com")
.build();
- 自文档化:代码即文档,无需查看类定义即可理解参数意义。
(2) 处理多参数和可选参数
-
灵活构造:可选参数可以跳过,必填参数强制要求设置。
-
避免"伸缩构造函数"问题(无需为不同参数组合重载多个构造函数)。
(3) 支持不可变对象
-
对象一旦通过
build()
创建,所有属性变为final
,保证线程安全和状态一致性。 -
普通 Setter 方法会破坏不可变性。
(4) 分离构造逻辑
-
构造过程通过
Builder
类封装,与目标类解耦。 -
可以在
build()
方法中添加校验逻辑,确保对象有效性。
三、完整代码
java
@Builder
public class User {
private final String name;
private final int age;
@Builder.Default private String address = "Unknown";
@Builder.Default private String email = "N/A";
}
// 使用方式
User user = User.builder()
.name("Alice")
.age(25)
.address("New York")
.email("alice@example.com")
.build();