[英]How does an explicitly scoped this keyword in java work?
我知道this
關鍵字用於指向當前的類字段並像這樣調用構造函數:
class A{
String name;
public A(String name)
{
this.name=name;
this.(name.length());
}
public(int len)
{
//some code here
}
}
但我最近遇到了:
class B extends A
{
A varA = B.this;
}
我不明白這是怎么工作的。 誰能詳細說明一下
B.this
是對B
類實例的引用。
隨着B
擴展A
,可以聲明類型A
的變量並將其分配給對B
類實例的引用。
在您的示例中, B.this
等效於this
,因此它不是非常說明性的。 當您開始使用內部類時, this
聲明更有價值。
class Outer {
public void doSomething() {
}
class Inner {
public void doSomething() {
Outer.this.doSomething();
}
}
}
注意Inner
類中Outer.this
的使用。 沒有它,內部類就沒有之間消除歧義的方式this
是指內在實例和this
是指外實例。
B.this
意味着您正在獲取B類實例的引用/指針, B繼承自A,因此您實際要做的是使用B的引用/指針初始化A。
當您在anonymous/inner
類中調用B class
的實例時, B.this
很有用。
您也可以調用this
,它等效於B.this
但是您不能在anonymous/inner
類中調用this
,否則您將得到它們的實例而不是class B
實例。
實際上, this
關鍵字用於引用類的實例。
當你做
this.name
您是從類A
的實際實例中引用屬性name
。
當你做
B.this
您指的是B
級實例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.