使用“返回此”时返回课程的内容是什么?

时间:2014-03-20 00:04:45

标签: java

我开始学习Java,但我无法理解“Thinking in Java”一书中的一个例子。 在这个例子中,作者表示,因为他声明“简单使用'this'关键字”:

//Leaf.java
//simple use of the "this" keyword

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();
    }
}

当上面的代码确实正常工作时,我无法理解返回的increment()方法是什么。

它不是变量i,它不是对象x?我只是不明白。我尝试修改程序以理解它(比如将return this替换为return iprint x而不是i),但编译器会显示错误。

4 个答案:

答案 0 :(得分:2)

return this;

将返回当前对象,即您用于调用该方法的对象。在您的情况下,将返回x类型的对象Leaf

答案 1 :(得分:0)

this表示调用该方法的类的实例。所以返回this意味着返回该类的实例。因此,无论如何返回类型,increment()方法返回Leaf并返回调用increment()方法的实例。

这就是你可以打电话的原因:

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

因为每次调用.increment(),你都会得到另一个Leaf,你可以再次调用Leaf中的所有方法。

答案 2 :(得分:0)

this是引用当前Leaf实例的关键字。当您使用Leaf创建第一个Leaf leaf = new Leaf ()时,它会创建一个Leaf的单一实例

从根本上说,您将返回正在调用Leaf

increment()实例

答案 3 :(得分:0)

return this;返回它所作用的类的实例。因此,increment()的每次调用都会返回相同的实例,然后再次调用increment。您可以继续将increment()称为:

x.increment().increment().increment().increment().increment().increment()...