我从 K&B 书籍“SCJP Sun Certified Programmer for Java 6 Study Guide”中获取了以下代码:
class A { // 1
void m() {
System.out.println("outer");
}
}
public class TestInners {
public static void main(String[] args) {
new TestInners().go();
}
void go() {
new A().m();
class A { // 2
void m() {
System.out.println("inner");
}
}
}
class A { // 3
void m() {
System.out.println("middle");
}
}
}
如书中所述,此代码打印“中间”。我推断标记为“3”的类声明隐藏了标记为“1”的类声明,它在 TestInners 类的外部。如果这些类位于不同的包中,我可以通过使用包名限定其中一个来解决歧义。但在这种情况下,这些类不仅在同一个包中,而且在同一个文件中。如何获取外部类的实例?
我在这里看到了同样的问题,但接受的答案意味着修改代码,为整个事物添加一个封闭类。我的问题是如何使用任何类型的限定符或引用来获取实例,如果可能的话。