最近,我发现这行得通,尽管我希望它不会:
class Outer
{
Button b;
void foo() {}
void bar()
{
b = new Button();
b.setOnClickListener(new OnClickListener(){
@Override
public void OnClick()
{
foo();
}
});
}
}
我希望可以使用Outer.this.foo(),但似乎简单地foo()也可以。有人可以告诉我什么时候才将其添加到语言中吗?请在这里帮助我了解确切的名称解析规则。谢谢!
问题:
1)为什么会这样?
2)如果可行,为什么我们需要“ Outer.this”语法?
自从引入内部类以来,就存在调用此类方法的可能性。Java语言规范的第15.12.4.1节“计算目标参考(如果需要)”中详细描述了解决调用方法实例的机制。
您可能指的是您不需要“合格this
”的事实。但这this
主要是为了解决内部实例和外部实例具有相同签名的方法时的歧义。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句