Heim >Java >javaLernprogramm >Können mehrere Java-Klassen der obersten Ebene in einer Datei mit externem Code interagieren?
Mehrere Klassendeklarationen in Java: Eine detaillierte Erklärung
In Java können mehrere Klassen der obersten Ebene innerhalb einer einzigen Datei koexistieren, mit nur einer davon ist als öffentlich gekennzeichnet. Diese Technik, der ein spezifischer Name analog zu inneren, verschachtelten oder anonymen Klassen fehlt, wirft zwei Schlüsselfragen auf:
1. Ist die Interaktion dieser sekundären Klassen mit Code außerhalb ihrer Kompilierungseinheit eingeschränkt?
Die Java Language Specification (JLS) erlaubt eine Einschränkung, die es verbietet, dass sekundäre Klassen durch Code in anderen Kompilierungseinheiten referenziert werden, erzwingt diese jedoch nicht innerhalb desselben Pakets. Dies bedeutet, dass sie nicht als paketprivat behandelt werden können.
2. Gehen verschiedene Java-Implementierungen unterschiedlich mit dieser Einschränkung um?
Im Gegensatz zum JLS erzwingt der Java-Compiler javac aktiv eine Einschränkung, die effektiv davon abhält, auf Top-Level-Klassen aus externen Dateien zu verweisen, es sei denn, sie haben denselben Namen wie die Datei, in der sie sich befinden.
Detaillierte Erklärung
Diese Einschränkung tritt auf, wenn Eine Klasse in Datei A versucht, auf eine Klasse in Datei B zuzugreifen, wobei Datei B auch eine andere Klasse mit demselben Namen wie Datei B enthält. Wenn jedoch eine Klasse in Datei A auch auf die andere Klasse in Datei B mit demselben Namen zugreift, wird die Kompilierungsfehler verschwindet.
Zu illustrieren:
FileA.java:
public class FileA { private FileB fileB; }
FileB.java:
public class FileB { private class FileBClass { } }
Kompilieren FileA.java allein führt zu einem Fehler:
FileA.java:2: cannot find symbol symbol : class FileBClass location: class FileA
Um dieses Problem zu beheben, muss entweder FileA.java auch auf FileB.java verweisen oder FileB.java sein zusammengestellt im Voraus.
Schlussfolgerung
Obwohl dies nicht ausdrücklich verboten ist, rät die erzwungene Einschränkung von javac davon ab, auf Klassen der obersten Ebene aus externen Dateien zu verweisen, es sei denn, sie haben denselben Namen wie die Datei, in der sie sich befinden in, was diese Praxis in den meisten Fällen unpraktisch macht.
Das obige ist der detaillierte Inhalt vonKönnen mehrere Java-Klassen der obersten Ebene in einer Datei mit externem Code interagieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!