所以我有一個簡單的編程問題,我似乎無法找到答案。在瀏覽谷歌的一些代碼時,我注意到他們把'this'放在代碼中的很多方法之前。這樣做的目的是什麼?它沒有比不使用它有什麼好處嗎?在調用方法之前使用'this'。
一個例子:
this.doMethod();
相比:
doMethod();
我敢肯定它的一個簡單的答案,我只是喜歡能夠了解所有我讀的代碼。
所以我有一個簡單的編程問題,我似乎無法找到答案。在瀏覽谷歌的一些代碼時,我注意到他們把'this'放在代碼中的很多方法之前。這樣做的目的是什麼?它沒有比不使用它有什麼好處嗎?在調用方法之前使用'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
代表理智的類對象。
這是一個關於Java和OOP的問題,但不是針對Android的。 –