'this'用於訪問當前正在使用的對象。由於該方法將訪問正在傳遞的當前對象,因此它具有優於傳遞對象本身的優點。爲什麼使用'this'關鍵字是必要的?
回答
它有超過傳遞對象本身,因爲 方法去訪問被當前對象有什麼優勢通過 反正。
按你的問題上的優勢用this
關鍵字在傳遞對象本身的是this
是而當傳遞可能會或可能不會final
對象在Java中final
變量。作爲final
變量,我可以清楚地看到使用this
超過傳遞對象本身的兩個主要優點。
無法爲
this
的當前實例分配任何新值。this = new Foo(); //compilation error; cannot assign value to final variable : this
它可以在同步塊中。
synchronized(this){
/*this synchronized block will be locked on current instance*/
}
除了這方面的問題成立,有在Java中使用this
的許多優點,你可以從其他的答案弄清楚。
Shishir
this
很少真正需要 - 如果我記得是對的,只有當你有一個與本地變量同名的字段,並且你想明確指定你想要訪問該字段而不是局部變量時。
它可以在很多情況下幫助。其中最明顯的是在構造函數,當參數名稱相同的實例變量:
public final class Foo
{
private final int bar;
public Foo(final int bar)
{
this.bar = bar; // MUST specify "this" here
}
}
可以有很多this
關鍵字的使用。在java中,這是一個引用當前對象的引用變量。 this
的使用關鍵字
以下是關於this
關鍵字的6種用法。
- 此關鍵字可用於引用當前類實例變量。
- this()可用於調用當前的類構造函數。
- 此關鍵字可用於調用當前類方法(隱式地)
- 這可以作爲方法調用中的參數傳遞。
- 這可以在構造函數調用中作爲參數傳遞。
- 這個關鍵字也可以用來返回當前類的實例。
瞭解更多關於this Keywork
this
用於訪問當前類variable
或methods
。用於區分實例變量(ivars
)和局部變量。
如果我理解正確的話,你想要做
static void f(MyClass self) {
// access current class object using self
}
,而不是
void f() {
// access current class object using this
}
並調用該方法這樣的
MyClass.f(instance);
istead這
instance.f();
儘管這實際上是可能的,但如果需要訪問它,則必須始終將當前對象作爲參數傳遞。爲什麼不把對象隱式地傳遞給非靜態方法?這是java所做的。
當您查看構造函數時,您會注意到無法將當前類對象傳遞給它,因爲在構造函數被調用之前對象不存在。所以你不能訪問構造函數中的當前類對象。
- 1. $ this關鍵字的含義是什麼?
- 2. 爲什麼上下文是使用「this」關鍵字在JavaScript
- 3. 什麼是在java中使用「this」關鍵字
- 4. d3js - 如何使用`this`關鍵字或替代項是什麼?
- 5. 什麼是const關鍵字必需
- 6. 爲什麼不能在這裏使用'this'關鍵字?
- 7. 爲什麼不在這裏使用「this」關鍵字?
- 8. 爲什麼模板可以直接使用$ this關鍵字?
- 9. javascript的'this'關鍵字與java的'this'關鍵字有什麼不同?
- 10. 「this」關鍵字在Java的「.addActionListener(this)」中引用了什麼?
- 11. java中「This」關鍵字的用法是什麼?
- 12. 是否正確使用「this」關鍵字?
- 13. 什麼是synchronized關鍵字的使用?
- 14. System.IO.StreamWriter:爲什麼我必須使用關鍵字「using」
- 15. 爲什麼需要virtual關鍵字?
- 16. 是否有必要使用Throwables.propagate(e)使用throw關鍵字?
- 17. 什麼是`this`關鍵字的Scala類型編程類比?
- 18. 使用關鍵字「this」有什麼好處?
- 19. 什麼時候你會在PHP中使用$ this關鍵字?
- 20. 「this」的用法關鍵字
- 21. 爲什麼使用void關鍵字?
- 22. 爲什麼使用params關鍵字
- 23. 爲什麼不使用new關鍵字
- 24. 我們是否必須在打字稿中使用「this」關鍵字?
- 25. 爲什麼在這段代碼中的setAdapter方法中使用了「this」關鍵字?它是指什麼?
- 26. 爲什麼不能在.Net的靜態方法中使用關鍵字'this'?
- 27. 函數調用和關鍵字'this'之間的關係是什麼?
- 28. 「this」這個關鍵字是什麼意思?
- 29. 使用「this」關鍵字的對象
- 30. 使用「this」關鍵字的功能
請添加描述源代碼的具體問題情況。 – Smutje
這是用來訪問當前類變量或方法。用於區分實例變量和局部變量。 –