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

use*_*478 17 java this program-flow

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

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);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Google Web Toolkit进行编程,但我认为这确实是一个通用的Java问题.

pol*_*nts 23

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

JLS 15.8.4.合格的

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

C为表示的类ClassName.设n是一个整数,使得C是出现限定该表达式的类的第n个词汇封闭类.表单的表达式的值ClassName.this是(第8.1.3节)的第n个词汇封闭实例this.类型表达的是Ç.如果当前类不是C类或C本身的内部类,则它是编译时错误.

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

workWithWidget(SearchWidget.this);
Run Code Online (Sandbox Code Playgroud)

参考

相关问题


Mar*_*aux 20

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

workWithWidget(SearchWidget.this);
Run Code Online (Sandbox Code Playgroud)

  • @Gerdemb:开始接受你问题的答案.您只有24%的人接受了答案.如果你从不接受答案,那么人们就会把你的问题留下来,因为你不会接受它们. (2认同)