如何访问具有内部类实例的顶级/封闭类实例

问题描述 投票:0回答:2

注意:我不是在谈论从内部类访问封闭类的方式,这根本不是问题。我要说的是:

class TopLevel {

    class InnerClass {
    }
}


// in some other class A.java
public void execute(InnerClass ic) {

}

在这里,在

execute()
方法中,我们将
InnerClass
的实例作为参数传递。所以我真正想要的是 访问
Enclosing
类的实例,在该类中创建了传递给
InnerClass
execute()
实例。

如何实现这一目标?

java inner-classes
2个回答
0
投票

没有标准的方法来做到这一点。

您需要添加将外部类返回到内部类的方法。


0
投票

我找到了一个非常好的解决方案。如果您有权访问源代码,那么这样的事情是可能的:

class TopLevel {

    class InnerClass {
        // just declare the method that exposes the enclosing instance
        public TopLevel getEnclosing() {
            return TopLevel.this; 
        }   
    }
}

// in some other class A.java
public void execute(InnerClass ic) {
    ic.getEnclosing().doSomething();
}

© www.soinside.com 2019 - 2024. All rights reserved.