在Java中访问包含内部类的类

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

这就是我现在正在做的。有没有更好的方式来访问超类?

public class SearchWidget {
    private void addWishlistButton() {
        final SearchWidget thisWidget = this;
        button.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                // A better way to access the super class?
                // something like "this.super" ...?
                workWithWidget(thisWidget);
            }
        }
    }
}

我使用Google Web Toolkit进行编程,但我认为这实际上是一个普通的Java问题。

提问于
用户回答回答于

可以使用所谓的合格this

任何词汇封闭的实例都可以通过明确限定关键字来引用this。 设C表示的类ClassName。设n是一个整数,使得C是该表达式限定的类的第n个词汇封闭类。形式表达式的值ClassName.this是(§8.1.3)的第n个词汇封闭实例this。类型表达的是Ç。如果当前类不是C类或C类本身的内部类,则是编译时错误。

在这种情况下,你可以做Martijn建议的,并使用:

workWithWidget(SearchWidget.this);
用户回答回答于

可以编写外部类的名称,然后.this。所以:

workWithWidget(SearchWidget.this);

扫码关注云+社区