return this 是java中返回当前对象引用的编程技巧,用于实现方法链,使多个方法可连写调用,需方法返回类类型并避免与void混用。

什么是return this?
在Java中,return this 是指在方法末尾返回当前对象的引用(即 this)。它本身不是语法糖,而是一种编程技巧,常用于实现方法链(Method Chaining),让多个方法调用可以连写成一行,提升代码可读性和表达力。
为什么需要return this?
默认情况下,Java方法若无返回值,就声明为 void。一旦用了 void,就无法继续调用下一个方法——因为没有返回值可“点”下去。而 return this 让每个方法都返回自身,从而支持连续调用。
- 避免重复写对象名:
user.setName("Alice").setAge(25).setEmail("a@b.com")比三行分开调用更紧凑 - 强调“构建”或“配置”语义:常见于Builder模式、流式API、DSL风格接口
- 不改变原有对象状态(通常配合可变对象使用),也不强制要求不可变
如何正确使用return this?
关键在于方法必须有返回类型,并且是当前类类型(或其父类/接口,但通常就是本类)。同时,方法内部应完成逻辑并返回 this。
示例(一个简单的用户构建器):
public class User {
private String name;
private int age;
private String email;
public User setName(String name) {
this.name = name;
return this; // 返回当前实例
}
public User setAge(int age) {
this.age = age;
return this;
}
public User setEmail(String email) {
this.email = email;
return this;
}
}
调用时即可链式书写:User user = new User().setName("Tom").setAge(30).setEmail("tom@x.com");
注意事项和常见误区
return this 看似简单,但容易误用:
-
不能和void混用:一旦某个方法返回
void,链式调用就会中断 - 注意返回类型一致性:若子类重写该方法,需确保返回类型兼容(可用协变返回类型,如返回子类自身)
-
不要在构造逻辑中滥用:比如在
toString()或hashCode()中加return this就违背语义 -
与不可变对象配合需谨慎:若类设计为不可变,每个“设置”方法应返回新实例(而非
this),此时应返回new User(...)而非this
不复杂但容易忽略细节。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











