Clase interna de Java con el mismo nombre que otra clase de nivel superior
Tengo una pregunta relacionada con las clases internas de Java.
¿Hay alguna forma de acceder a la clase A de nivel superior desde la clase principal de nivel superior que define la clase A interna?
Abajo hay un código de muestra que demuestra el problema:
class A { // Outer Class A
{
System.out.println("A outer");
}
}
class B { // Outer Class B
{
System.out.println("B outer");
}
}
public class Main {
class A { // Inner Class A
{
System.out.println("A inner");
}
}
public void newA() {
class A { // Local Class A
{
System.out.println("A local");
}
}
new A();
}
public static void main(String[] args) {
new Main().newA(); // prints "A local"
new Main().new A(); // prints "A inner"
//new A(); // compiler error: No enclosing instance of type Main is Accessible.
new B(); // but this works and prints "B outer"
}
}