Java链式编程的核心在于每个修改状态的方法都返回当前对象自身,调用方就可以在同一个表达式里连续使用点号调用多个方法。这种写法让代码更紧凑,也更接近自然语言的描述方式。

什么是return this
在Java类的方法中,this表示当前实例的引用。当方法声明返回类型为类本身,并在结尾写return this;时,调用该方法后会拿到同一个对象,从而继续调用其公开方法。
一个用户构建器的例子
下面用一个UserBuilder类演示如何通过return this实现链式设置属性:
public class UserBuilder {
private String name;
private int age;
private String email;
public UserBuilder setName(String name) {
this.name = name;
return this; // 返回当前对象,支持链式调用
}
public UserBuilder setAge(int age) {
this.age = age;
return this;
}
public UserBuilder setEmail(String email) {
this.email = email;
return this;
}
public User build() {
User u = new User();
u.name = this.name;
u.age = this.age;
u.email = this.email;
return u;
}
static class User {
String name;
int age;
String email;
}
public static void main(String[] args) {
User u = new UserBuilder()
.setName("张三")
.setAge(28)
.setEmail("test@ipipp.com")
.build();
System.out.println(u.name + " " + u.age + " " + u.email);
}
}
为什么能连着写
上面代码中,new UserBuilder()得到对象后,setName("张三")返回this也就是原对象,于是外层可以继续点setAge。这就是方法链(method chaining)的基本机制。
使用时的注意点
- 返回类型要写成当前类,不能是void,否则无法继续点方法。
- 如果是不可变对象设计,通常不应返回this,而是返回新对象。
- 链式写法不宜过长,否则调试时定位具体哪一步出错会比较麻烦。
常见应用场景
| 场景 | 说明 |
|---|---|
| 构建器模式 | 像上面的UserBuilder,分步构造复杂对象 |
| 工具类API | 如StringBuilder的append方法返回自身 |
| 流式处理 | Stream中间操作返回Stream实现链式管道 |
小结
只要在修改对象状态的方法里正确写return this;,就能让Java类支持链式编程。掌握这一点后,你可以把零散的setter调用改成流畅的方法链,提升代码可读性。
Java链式编程return_this修改时间:2026-07-27 20:09:16