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}}方法?
答案 0 :(得分:3)
这是因为class Nested
是inner 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)
如果要静态访问它,请嵌套静态类和静态方法