0

所以我有一个简单的编程问题,我似乎找不到答案。在浏览 Google 的一些代码时,我注意到他们将“this”放在了代码中许多方法的前面。这样做的目的是什么?它比不使用它有什么好处吗?

一个例子:

this.doMethod();

相比:

doMethod();

我确信这是一个简单的答案,我只是喜欢能够理解我阅读的所有代码。

4

3 回答 3

5

不,这对方法调用没有任何影响。使用您认为更具可读性的任何一个。

请注意,在消除实例变量和参数(或其他局部变量)之间的歧义时确实会有所不同。例如:

public void setFoo(int foo) {
    this.foo = foo;
}

那是从参数中为实例变量分配一个值-仅使用foo = foo;将是无操作的。

于 2012-12-23T15:15:43.780 回答
3

它们之间根本没有区别。您总是在某些参考上调用方法。如果您不使用任何引用,this则引用是隐式的。

所以,doMethod()与 相同this.doMethod()。通过使用this,您只需使其明确。

需要this显式使用引用的一个地方是您将方法/构造函数参数的值分配给实例变量的地方,并且两者具有相同的名称,如下例所示:

public Demo(int var) {  // Constructor
    this.var = var;
}

所以,在上面的例子中,this.var指的是实例变量,而不同于var指的是构造函数参数。

于 2012-12-23T15:15:24.093 回答
3

this表示当前类的对象实例。在编程实践中,大多数时候,它是用来打破歧义的。例如,在示例中,有一个名为的类变量和一个名为的name方法参数named,因此这用于区分两者。

     public void setName(String name){
         this.name= name;
     }

如果您没有任何歧义,那么它不会产生太大的差异setName("John");,即this.setName("John");是同一件事。但是仍然有一个区别。this.setName("John");遵循与您在对象上调用方法相同的模式(例如emp.setName("A"););这里this代表理智的类对象。

于 2012-12-23T15:16:04.987 回答