Heim >Java >javaLernprogramm >Können in einer einzelnen Java-Datei mehrere Klassen der obersten Ebene vorhanden sein?
Mehrere Klassendeklarationen in einer einzigen Java-Datei
In Java ist es möglich, mehrere Klassen der obersten Ebene in einer Datei zu definieren, aber mit der Einschränkung, dass nur eine dieser Klassen öffentlich sein kann (gemäß JLS §7.6).
Gibt es dafür einen bestimmten Begriff? Technik?
Obwohl es für diese Praxis keinen formalen Namen analog zu „inneren“, „verschachtelten“ oder „anonymen“ Klassen gibt, kann sie als Multiple der obersten Ebene bezeichnet werden Klassendeklaration.
Sind sekundäre Klassen daran gehindert, in anderen Kompilierungen referenziert zu werden? Einheiten?
Das JLS gibt tatsächlich an, dass die Java Virtual Machine (JVM) eine Einschränkung erzwingen kann, dass diese sekundären Klassen nicht „durch Code in anderen Kompilierungseinheiten des Pakets referenziert werden“ können. Diese Einschränkung wird jedoch nicht konsistent in allen Java-Implementierungen durchgesetzt.
Erklärung des Java-Implementierungsverhaltens
Während einige Java-Implementierungen diese dateiübergreifende Referenzierung möglicherweise nicht aktiv verbieten, tun sie es doch Einschränkungen haben, die dies wirksam verhindern. Wenn beispielsweise eine öffentliche Klasse namens Foo auf eine andere Klasse der obersten Ebene namens Bar aus einer anderen Datei verweist, schlägt die Kompilierung von Foo möglicherweise mit einem ähnlichen Fehler fehl: "cannot find symbol: class Baz". Dieser Fehler tritt auf, weil der Compiler nicht weiß, in welcher Quelldatei er nach der referenzierten Klasse Bar suchen soll.
Um diese Probleme zu vermeiden, ist es ratsam, jede Quelldatei auf nur eine Klasse der obersten Ebene zu beschränken, es sei denn, es handelt sich um die sekundäre Klasse Klassen müssen aus irgendeinem Grund auf die öffentliche Klasse zugreifen.
Das obige ist der detaillierte Inhalt vonKönnen in einer einzelnen Java-Datei mehrere Klassen der obersten Ebene vorhanden sein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!