Java intérieure visibilité de classe puzzle

Considérons le cas suivant:

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

D'un avertissement dans Eclipse, je cite, que: le compilateur java émule le constructeur de A. B() par un synthétique de la méthode d'accesseur. Je suppose que le compilateur va de l'avant et crée une "sous l'eau" constructeur de B.

J'ai l'impression que c'est plutôt étrange: pourquoi la classe B de ne pas être visible comme un.k.o. dans Un champ?
Et: est-ce que cela signifie que la classe B est plus privé au moment de l'exécution?
Et: pourquoi se comporte le mot clé protected de la classe B est différent?

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

OriginalL'auteur Gerard | 2009-07-06