使用"这个"的目的是什么?此代码段中的关键字?

时间:2016-03-28 04:14:21

标签: java this

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调用方法增量,this关键字提供对x的引用。但是,如何帮助人们执行多个增量,如下一行所示?

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

2 个答案:

答案 0 :(得分:5)

您已发布method chaining的示例;链接的维基百科条目(部分)

  

方法链,也称为命名参数idiom ,是在面向对象编程语言中调用多个方法调用的常用语法。每个方法都返回一个对象,允许在单个语句中将调用链接在一起,而不需要变量来存储中间结果。

x.increment().increment().increment().print();中,每个increment() 链接到下一个电话。而且,incrementi++开头,因此每次调用都会将i增加1.它在功能上等同于

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

另见StringBuilder.append()方法;他们还返回this以允许方法链接,如

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

答案 1 :(得分:0)

这里没有任何花哨或模糊的问题,问题是 如何帮助您执行多个增量,如下一行? 你正在调用increment()方法三次,就这么简单,increment方法id返回一个只有类的对象才能再次调用increment方法。因此,如果x是Leaf类型的对象,则x.increment也是Leaf类型的对象(返回类型为Incre),因此可以再次调用increment方法。每次调用increment方法时,我们都将i递增1。 如果还不清楚,请告诉我。