Sichtbarkeitspuzzlespiel der Java-inneren Klasse
Betrachten Sie den folgenden Fall:
public class A {
public A() { b = new B(); }
B b;
private class B { }
}
Aus einer Warnung in Eclipse zitiere ich Folgendes: Der Java-Complier emuliert den Konstruktor A.B () mit einer synthetischen Zugriffsmethode. Ich nehme an, der Compiler geht jetzt voran und erstellt einen zusätzlichen "Unterwasser" -Konstruktor für B.
Ich finde das ziemlich seltsam: warum sollte Klasse B nicht als a.k.o. sichtbar sein? Feld in A? Und: Bedeutet das, dass Klasse B zur Laufzeit nicht mehr privat ist? Und: warum verhält sich das geschützte Schlüsselwort für Klasse B anders?
public class A {
public A() { b = new B(); }
B b;
protected class B { }
}