“如何访问”;这";java中匿名外部类的引用

“如何访问”;这";java中匿名外部类的引用,java,closures,anonymous-types,Java,Closures,Anonymous Types,我有以下问题。两个嵌套的匿名类型。我想访问最内部类中外部匿名类的“this”引用。通常,如果一个人在命名的外部类中有匿名嵌套类(我们称之为“外部类”),他/她会在嵌套类中键入outer.this.someMethod()。如果外部类是匿名的,我如何引用它? 示例代码: public interface Outer { void outerMethod(); } public interface Inner { void innerMethod(); } ... public s

我有以下问题。两个嵌套的匿名类型。我想访问最内部类中外部匿名类的“this”引用。通常,如果一个人在命名的外部类中有匿名嵌套类(我们称之为“外部类”),他/她会在嵌套类中键入
outer.this.someMethod()
。如果外部类是匿名的,我如何引用它? 示例代码:

public interface Outer {
    void outerMethod();
}

public interface Inner {
    void innerMethod();
}
...
public static void main(String[] args) {
...
new Outer() {
    public void outerMethod() {
        new Inner() {
            public void innerMethod() {
                Outer.this.hashCode(); // this does not work
            } // innerMethod
        }; // Inner
    } // outerMethod
}; // Outer
...
} // main
我得到的错误是

在作用域中无法访问外部类型的封闭实例

我知道我可以像这样复制参考:

final Outer outerThisCopy = this;
在实例化
内部
对象之前,然后引用此变量。真正的目的是为了调试,我想比较
外部异类
的hashCodes和
新内部
对象(即
外部。此
)中访问的对象。我有一些很好的理由认为这两个对象是不同的(在我的例子中)。 [上下文:参数是调用在“外部”类中实现的getter(在“内部”类中没有阴影)会返回不同的对象]

知道如何访问封闭匿名类型的“this”引用吗


谢谢。

您不能直接从内部类或其内部的另一个匿名类访问匿名类的实例,因为匿名类没有名称。但是,您可以通过以下方法获取对外部类的引用:

new Outer()
{
    public Outer getOuter()
    {
        return this;
    }

    public void outerMethod()
    {
        new Inner()
        {
            public void innerMethod()
            {
                getOuter().hashCode();
            }
        };
    }
};

您可以在匿名外部类中提供一个方法
intouterhashcode(){returnhashcode();}
。在您的内部类中,您可以访问此方法;就叫它吧。我担心,另一种方法是不可能的。