我从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");
}
}
}
正如书中所述,此代码将打印“middle”。我推断标记为“3”的类声明遮盖了TestInners类外部标记为“1”的类声明。 如果这些类在不同的包中,我可以通过使用包名称限定其中一个来解决歧义。但在这种情况下,这些类不仅在同一个包中,而且在同一个文件中。我怎样才能获得外部类的实例? 我在这里看到了相同的问题,但被接受的答案暗示要修改代码并添加一个封闭类到整个代码块中。我的问题是如何使用任何类型的限定符或引用获取实例,如果可能的话。