我开始学习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 i
或print x
而不是i
),但编译器会显示错误。
答案 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()...