Рассмотрим следующий случай:
public class A {
public A() { b = new B(); }
B b;
private class B { }
}
Из предупреждения в Eclipse я цитирую, что: java complier эмулирует конструктор A.B() синтетическим методом доступа. Я предполагаю, что компилятор теперь идет вперед и создает дополнительный конструктор "under water" для B.
Я чувствую, что это довольно странно: почему класс B не будет виден как a.k.o. поле в A? И: означает ли это, что класс B больше не является закрытым во время выполнения? И: почему поведение ключевого слова protected для класса B отличается?
public class A {
public A() { b = new B(); }
B b;
protected class B { }
}