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 { }
}

questionAnswers(4)

yourAnswerToTheQuestion