¿Por qué puedo acceder a los miembros privados de una referencia de clase adjunta?
He visto muchas preguntas sobre el acceso a miembros privados de una clase adjunta. Sin embargo, mi pregunta es lo contrario.
Si tengo (como ejemplo), el siguiente código:
public class A {
private String outerString = "silly string";
static class B {
private final A someA = new A();
public void foo() {
String b = someA.outerString ;
}
}
}
Me pregunto por qué esto compila? Habría esperado un error en virtud de la forma en que accedo a la variable de instancia 'outerString' de la clase A (a través de someA.outerString). Sé que una clase interna puede acceder a los miembros de la clase adjunta directamente mediante una referencia implícita "this". Pero aquí, la clase B es estática, por lo que la referencia 'esto' no se aplicará.