java中用this实现链式构建的核心是每个设置方法返回this,配合静态工厂方法开启调用链,build()方法收尾并生成最终对象。

在 Java 中用 this 实现链式构建,核心是让每个修改属性或配置的方法都返回当前对象(this),从而支持连续调用。这常见于 Builder 模式或 fluent API 设计中。
方法需返回 this 且声明为当前类型
每个用于设置参数的方法不能是 void,而应返回 this,并且返回类型必须是当前类(或其父类/接口,但通常用当前类)。这样编译器才知道后续可以继续调用该类的其他方法。
- 返回类型写成
public ClassName setXxx(...),不是void - 方法末尾统一加
return this; - 避免在中间修改
this引用(比如重新 new 对象),否则链会断掉
构造器或静态工厂配合使用更自然
单独靠实例方法链式调用还不够直观,通常搭配一个无参构造器或静态工厂方法(如 create() 或 builder())来开启链式调用。
- 推荐提供静态工厂方法,例如
public static PersonBuilder create() { return new PersonBuilder(); } - 用户调用时写成
Person p = PersonBuilder.create().name("Alice").age(30).build(); - 如果直接 new,也得保证构造后立刻能链式调用:
new PersonBuilder().name("Bob").build()
注意不可变性与线程安全
链式调用本身不改变对象创建方式,但若想支持“每次调用都返回新对象”(即不可变风格),就不能在原对象上改字段,而要复制并返回新实例。这时 this 就不能直接返回,需返回新对象。
- 可变风格:直接改字段 +
return this;(简单高效,但非线程安全) - 不可变风格:创建副本 → 修改副本 →
return 新副本;(安全但有开销) - 多数业务场景用可变 builder 类(只在 build 阶段生成最终不可变对象)
build() 方法收尾并生成最终对象
链式调用最后一般以 build() 结束,它负责校验、组装并返回目标对象(如 Person)。这个方法通常返回最终结果类型,不再返回 this。
-
build()前可做必要检查,比如必填字段是否为空 - 建议把 builder 内部字段设为
private,防止外部绕过链式逻辑直接修改 - 若 builder 类和目标类分离(标准 Builder 模式),
build()返回的是目标类实例
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











