Головоломка видимости внутреннего класса Java

Рассмотрим следующий случай:

public class A {
  public A() { b = new B(); }
  B b;
  private class B { }
}

Из предупреждения в Eclipse я цитирую следующее: компилятор java эмулирует конструктор A.B () с помощью синтетического метода доступа. Я предполагаю, что компилятор теперь идет вперед и создает дополнительный «под водой» конструктор для Б.

Я чувствую, что это довольно странно: почему класс B не будет виден как a.k.o. поле в А? И: означает ли это, что класс B больше не является частным во время выполнения? И: почему поведение защищенного ключевого слова для класса B отличается?

public class A {
  public A() { b = new B(); }
  B b;
  protected class B { }
}

Ответы на вопрос(4)

Ваш ответ на вопрос