返回 this 能实现链式调用,因为每个 setter 返回当前对象实例,使连续调用成为可能;标准写法是将返回类型改为当前类并末尾加 return this;需注意不适用于构造阶段、继承中类型安全、与 Lombok 冲突及 final 字段限制。
Java 中通过 this 返回当前对象,是实现链式调用(如链式 setter)的核心技巧。它让多个方法调用可以连写成一行,提升代码可读性和流畅性。
链式调用的本质是:前一个方法执行完后,返回一个对象,该对象支持继续调用下一个方法。若每个 setter 都返回 this(即当前实例),就能在一次创建后连续设置多个属性。
例如:user.setName("Alice").setAge(25).setEmail("[email protected]");
这行代码能成立,前提是 setName()、setAge() 等方法都返回 this。
每个 setter 方法需满足两个条件:修改属性 + 返回 this。
void 改为当前类类型(如 User)return this;
示例:
立即学习“Java免费学习笔记(深入)”;
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; }}
链式调用虽简洁,但需注意适用场景和潜在限制:
return (SubUser) this;),可支持子类链式调用;否则可能丢失类型信息@Setter 默认生成 void 方法;启用 @Setter(onMethod_ = {@Override}) 或使用 @Accessors(chain = true) 才能自动生成链式 setterfinal,则无法赋值两者目标相似,但定位不同:
实际项目中,二者可结合:用 Builder 构建对象,内部用链式风格组织方法。