如何在单个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
相关产品推荐
相关产品推荐

