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

如何在单个Message对象上实现append方法的链式调用?

实现链式调用的Message类详解

嘿,我完全懂你的需求!你想要让append方法既能链式调用,又能直接修改你创建的那个Message对象本身,而不是每次调用都生成新对象对吧?这其实是Java里很常见的方法链式调用实现,核心就是让append返回当前对象的引用。

我给你写个完整的Message类实现,你一看就明白:

public class Message {
    // 用成员变量存储当前的消息内容,这个变量会被持续修改
    private String content;

    // 构造方法,初始化消息内容
    public Message(String initialContent) {
        this.content = initialContent;
    }

    // append方法:追加字符串到content,然后返回当前对象(this)
    public Message append(String text) {
        // 直接在当前对象的content上追加内容,没有创建新对象
        this.content += text;
        // 返回this,也就是调用这个方法的那个Message对象本身
        return this;
    }

    public void printMessage() {
        System.out.println(this.content);
    }

    public static void main(String[] args) {
        Message m = new Message("test");
        m.append(" in").append(" progress").append(" ... ");
        m.printMessage(); // 输出:test in progress ... 
    }
}

关键要点解释:

  • 成员变量content:这个变量属于每个Message实例,用来保存当前的消息内容。每次调用append,都是直接修改这个变量的值,操作的就是你最初创建的那个m对象。
  • 返回this:this关键字在实例方法里代表当前调用该方法的对象。当你调用m.append(" in")时,方法内部的this就是m,返回它之后,你就可以继续在这个返回值上调用append,实现链式调用。
  • 不要创建新对象:如果你的append方法里写了return new Message(this.content + text),那每次调用都会生成新的Message对象,就不是操作原来的m了,这肯定不是你想要的。

这样运行你的main方法,就能得到你期望的输出啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:43:35