java—在这个代码段中使用“this”关键字的目的是什么?

i1icjdpr  于 2021-07-13  发布在  Java
关注(0)|答案(2)|浏览(272)

这个问题在这里已经有答案了

“this”关键字是如何工作的(22个答案)
三年前关门了。

public class Leaf {
int i=0;
Leaf increment() {
    i++;
    return this;
}
void print() {
    System.out.println("i= "+ i);
}
public static void main(String[] args) {
    Leaf x =new Leaf();
    x.increment().increment().increment().print();
}
}

输出:

i=3

直到现在我才知道 this 关键字用于生成对已调用该方法的对象的引用。所以在这段代码中,对象x调用方法increment和 this 关键字提供对x的引用。但是,这又如何帮助一个人执行下一行中的多次增量呢? x.increment().increment().increment().print();

bvjxkvbb

bvjxkvbb1#

您已经发布了一个方法链接的示例;链接的维基百科条目说(部分)
方法链接,也称为命名参数惯用法,是在面向对象编程语言中调用多个方法调用的常用语法。每个方法都返回一个对象,允许调用在单个语句中链接在一起,而不需要变量来存储中间结果。
x.increment().increment().increment().print(); 每个 increment() 被链接到下一个呼叫。而且, increment 开始于 i++ 所以每次通话都会增加 i 1。它在功能上等同于

x.increment();
x.increment();
x.increment();
x.print();

另请参见 StringBuilder.append() 方法;他们也会回来 this 允许像这样的方法链接

System.out.println(new StringBuilder("Hello ").append("World"));
mwecs4sa

mwecs4sa2#

这里没有什么花哨或含糊不清的地方,问题是这如何帮助一个人在执行多个增量,如下面一行?您将调用increment()方法三次,就这么简单,increment方法id将返回一个该类的对象,以便可以再次调用increment方法。所以如果x是leaf类型的对象,那么x.increment也是leaf类型的对象(increment的返回类型是leaf),所以可以再次调用increment方法。每次调用increment方法时,我们都将i递增1。如果还不清楚,请告诉我。

相关问题