Java中的This关键字用法

3
以下代码中的递增方法调用是如何工作的?

代码如下:

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();
  }
}
3个回答

4
这是一个 方法链 的示例。
通过返回 this,可以在原始对象实例的后续调用中进行方法链。
每次调用 increment() 都会将 i 的值增加 1,因为该调用作用于原始对象实例。
最后,在原始对象实例上调用 print(),以输出 i 的值。

@AbdulRahman 对此答案的补充是:如果你听到“流畅接口”这个术语,那么使用的就是这种技术。 - JNYRanger

1

这是我们正在尝试运行的代码:

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

这里是我们拥有的方法:

Leaf increment() {
    i++;
    return this;
}

这被称为方法链。让我们看看如果不使用return this会发生什么:
void increment() {
    i++;
}

而且代码看起来像这样:

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

看到了吗?直接返回对象并链接方法调用更简单。

1
@ChiefTwoPencils 愚蠢的打字错误 :P - Anubian Noob

0

它会递增一个对象字段 int i,然后返回对该对象的引用,因此您可以在点之后为同一叶子再次调用increment()方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接