在Java中访问内部类的包含类[英] Accessing the containing class of an inner class in Java

问题描述

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

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.

JLS 15.8.4.合格的这个

<块引用>

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

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

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

workWithWidget(SearchWidget.this);

参考文献

相关问题

本文地址:https://www.itbaoku.cn/post/978729.html