Heim >Java >javaLernprogramm >Können mehrere Java-Klassen der obersten Ebene in einer Datei mit externem Code interagieren?

Können mehrere Java-Klassen der obersten Ebene in einer Datei mit externem Code interagieren?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-06 04:31:10214Durchsuche

Can Multiple Top-Level Java Classes in One File Interact with External Code?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn