类似于“限定这个”的东西,但是用于访问嵌套类的成员而不是封闭类

时间:2013-10-02 11:38:11

标签: java nested-class

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
        }
    }

}

我希望我很清楚自己要做什么。有没有办法访问Nested的{​​{1}}方法?

4 个答案:

答案 0 :(得分:3)

这是因为class Nestedinner class,因此隐含了对包含它的TopLevel实例的引用。

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

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

由于您的Nested课程不是static,因此它与TopLevel的实例相关联 - 您可以使用TopLevel.this访问此实例。

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

答案 1 :(得分:1)

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

new Nested().someMethod();

答案 2 :(得分:0)

new Nested().someMethod();

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

答案 3 :(得分:0)

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