You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何未赋值的方法返回引用可直接链式调用?附Java示例

为什么可以直接链式调用increment方法?

这其实是Java里很常用的**方法链(Method Chaining)**写法,咱们一步步拆解就懂了:

核心原因:方法返回了对象引用

先看你代码里的方法声明 Leaf increment(); —— 这个方法明确返回了Leaf类型的引用。通常这类方法的实现会返回当前对象本身(也就是this关键字指向的实例),比如完整的实现可能是这样:

public class Leaf{
    Leaf increment() {
        // 这里写你的增量逻辑,比如修改某个成员变量的值
        return this; // 返回当前调用该方法的对象引用
    }
    public static void main(String[] args){
        Leaf x = new Leaf();
        x.increment().increment();
    }
}

链式调用的执行流程

x.increment().increment() 的执行步骤其实和你分步写的逻辑完全一致:

  1. 首先调用 x.increment(),方法执行完成后返回一个Leaf类型的引用(在上面的实现里,这个引用就是x自己)
  2. 紧接着,直接用这个返回的引用调用第二个increment()方法 —— 这和你把返回值赋值给temp后再调用temp.increment()是一模一样的,只是省略了中间变量而已。

和分步写法的等价性

你觉得容易理解的分步代码:

Leaf temp = new Leaf();
temp = x.increment();
temp.increment();

和链式调用的逻辑完全等价,只是链式调用把「保存中间引用」和「调用方法」这两步合并成了一行代码,让写法更简洁。

这种设计在Java里非常常见,比如StringBuilder的append()方法就是返回自身实例,所以你经常能看到类似 new StringBuilder().append("Hello").append(" World").toString() 的链式调用写法。

内容的提问来源于stack exchange,提问作者zzkyeee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:10:14