0
public class TopLevel {

    private void someMethod() {
        Nested.this.someMethod(); // compile error
    }

    private class Nested {
        private void someMethod() {
            TopLevel.this.someMethod(); // so-called "qualified this": OK
        }
    }

}

我希望很清楚我想要做什么。有没有办法访问NestedsomeMethod()方法?

4

4 回答 4

3

这是因为class Nested是一个内部类,因此具有对TopLevel包含它的实例的隐式引用。

您需要一个类的实例Nested才能访问someMethod

private void someMethod() {
    new Nested().someMethod();
}

因为你的Nested类不是static它的一个实例,所以TopLevel你可以使用TopLevel.this.

这同样不适用于其他方式,没有Nested绑定到的隐式实例TopLevel。您需要显式创建一个实例Nested才能访问其非static成员。

于 2013-10-02T11:41:31.180 回答
1

创建这样的实例,以便可以调用Nested实例方法someMethod

new Nested().someMethod();
于 2013-10-02T11:41:28.787 回答
0

尝试

new Nested().someMethod();

由于它是非静态内部类,您需要创建一个实例来访问它的方法

于 2013-10-02T11:41:41.857 回答
0

如果要静态访问它,请嵌套一个静态类和静态方法

于 2013-10-02T11:43:24.203 回答