我知道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的工作原理。任何人都可以详细说明
答案 0 :(得分:2)
B.this
是对B
类实例的引用。
当B
扩展A
时,可以声明类型为A
的变量,并将其分配给对B
类实例的引用。
答案 1 :(得分:1)
在您拥有的示例中,B.this
相当于this
,因此它不是非常具有说明性。当您开始使用内部类时,Scoped this
声明更有价值....
class Outer {
public void doSomething() {
}
class Inner {
public void doSomething() {
Outer.this.doSomething();
}
}
}
请注意在Outer.this
课程中使用Inner
。没有它,内部类将无法消除引用Inner实例的this
和引用外部实例的this
之间的歧义。
答案 2 :(得分:0)
B.this
表示您正在获取B类实例的引用/指针, B 继承自 A ,因此您实际执行的操作是初始化您的 A ,其参考/指针为 B 。
B.this
在B class
类中调用anonymous/inner
的实例时非常有用。
你也可以拨打this
,这相当于B.this
,但你不能在this
课程中拨打anonymous/inner
,否则你会得到他们的实例而不是class B
{{1}}实例。
答案 3 :(得分:0)
事实上,this
关键字用于引用到类的实例。
当你这样做时
this.name
您指的是类name
的实际实例中的属性A
。
当你这样做时
B.this
您指的是B
类intance。