[英]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.