所以我有一个简单的编程问题,我似乎找不到答案。在浏览 Google 的一些代码时,我注意到他们将“this”放在了代码中许多方法的前面。这样做的目的是什么?它比不使用它有什么好处吗?
一个例子:
this.doMethod();
相比:
doMethod();
我确信这是一个简单的答案,我只是喜欢能够理解我阅读的所有代码。
不,这对方法调用没有任何影响。使用您认为更具可读性的任何一个。
请注意,在消除实例变量和参数(或其他局部变量)之间的歧义时确实会有所不同。例如:
public void setFoo(int foo) {
this.foo = foo;
}
那是从参数中为实例变量分配一个值-仅使用foo = foo;
将是无操作的。
它们之间根本没有区别。您总是在某些参考上调用方法。如果您不使用任何引用,this
则引用是隐式的。
所以,doMethod()
与 相同this.doMethod()
。通过使用this
,您只需使其明确。
需要this
显式使用引用的一个地方是您将方法/构造函数参数的值分配给实例变量的地方,并且两者具有相同的名称,如下例所示:
public Demo(int var) { // Constructor
this.var = var;
}
所以,在上面的例子中,this.var
指的是实例变量,而不同于var
指的是构造函数参数。
this
表示当前类的对象实例。在编程实践中,大多数时候,它是用来打破歧义的。例如,在示例中,有一个名为的类变量和一个名为的name
方法参数named
,因此这用于区分两者。
public void setName(String name){
this.name= name;
}
如果您没有任何歧义,那么它不会产生太大的差异setName("John");
,即this.setName("John");
是同一件事。但是仍然有一个区别。this.setName("John");
遵循与您在对象上调用方法相同的模式(例如emp.setName("A");
);这里this
代表理智的类对象。