来自匿名内部类的外部类关键字

216
在以下代码片段中:

In the following snippet:

public class a {
    public void otherMethod(){}
    public void doStuff(String str, InnerClass b){}
    public void method(a){
        doStuff("asd",
            new InnerClass(){
                public void innerMethod(){
                    otherMethod();
                }
            }
        );
    }
}

在内部类中有没有一个关键字可以引用外部类?基本上我想做的是outer.otherMethod()或类似的操作,但似乎找不到合适的方法。

2个回答

365

通常你使用 OuterClassName.this 来引用外部类的封闭实例。

在你的示例中,这将是 a.this.otherMethod()


1
你能说一下为什么 a.otherMethod() 不能正常工作吗? - T.Todua
3
OuterClassName.otherMethod() 表示一个静态方法,因此您需要使用 OuterClassName.this 来获取外部类的实例。 - Bill the Lizard
1
在某些情况下,内部类中的OuterClassName.this可以为空吗? - Apurv Gupta
1
@ApurvGupta 我不这么认为。唯一的可能性是如果你尝试从静态方法创建一个匿名内部类。但是,如果在这种情况下尝试使用"a.this",你将会得到一个编译器错误。 - rents

48
OuterClassName.this.outerClassMethod();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接