Układanka widoczności klasy wewnętrznej Java
Rozważmy następujący przypadek:
public class A {
public A() { b = new B(); }
B b;
private class B { }
}
Z ostrzeżenia w Eclipse cytuję: java complier emuluje konstruktor A.B () za pomocą syntetycznej metody dostępu. Przypuszczam, że kompilator idzie teraz do przodu i tworzy dodatkowy konstruktor „pod wodą” dla B.
Czuję, że to raczej dziwne: dlaczego klasa B nie byłaby widoczna jako a.k.o. pole w A? I: czy to oznacza, że klasa B nie jest już prywatna w czasie wykonywania? I: dlaczego zachowuje inne chronione słowo kluczowe dla klasy B?
public class A {
public A() { b = new B(); }
B b;
protected class B { }
}