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

2022-09-02 19:40:27

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

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问题。


答案 1

您可以使用所谓的合格 .this

JLS 15.8.4.限定此

任何词法封闭实例都可以通过显式限定关键字 来引用。this

C 为 用 表示的类。设 n 为整数,使得 C 是出现限定的 this 表达式的类的第 n 个词法封闭类。形式的表达式的值是 (§8.1.3) 的第 n 个词法封闭实例。表达式的类型为 C。如果当前类不是类 C C 本身的内部类,则这是编译时错误。ClassNameClassName.thisthis

在这种情况下,您可以按照 Martijn 的建议执行操作,并使用:

workWithWidget(SearchWidget.this);

引用

相关问题


答案 2

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

workWithWidget(SearchWidget.this);