Ich habe eine Java-Datei, die mehr als eine Klasse enthält, von denen eine öffentlich ist. Wenn sich die Hauptmethode in einer nicht öffentlichen Klasse befindet. Ich kann diese Java-Datei nicht ausführen. Warum das? und es gibt auch keinen Kompilierungsfehler. Wenn ja, wie kann ich diese Hauptmethode verwenden?
Sie können natürlich die Hauptmethode außer Kraft setzen, und es verstößt nicht gegen irgendwelche Compiler-Regeln und daher werden Sie keine Compilerfehler haben.
Sie überprüfen, dass trotz der Tatsache, dass Sie mehr als eine Klasse haben, eine Datei, die als public deklariert ist, der Name der Datei ist, die Sie ausführen möchten.
Dies ist eine Konvention, nach der die Datei nach derselben Klasse benannt werden sollte, die in diesem Code öffentlich ist. . .
Wenn Sie also versuchen, diese Klasse auszuführen, hat sie keine Hauptmethode, von der sie ausgeführt wird. Wenn Sie die Hauptmethode in der nicht-öffentlichen Klasse ausführen wollen, ist der einzige Weg dazu, main von einem Haupt-Aufruf aufzurufen Methode der öffentlichen Klasse.
Tatsächlich können Sie die Hauptmethode in einer nichtöffentlichen Klasse ausführen. wenn Sie diese Klasse setzen
%Vor%in einer Datei namens NonPubClass.java. Sie können diese Datei mit dem Befehl javac kompilieren, aber Sie erhalten keine NonPubClass.class, stattdessen erhalten Sie eine A.class. Benutze Java, um diese Klasse aufzurufen und du wirst die gedruckte Zeichenkette sehen --- Dies ist keine öffentliche Klasse!
Einfache Antwort. %Code%. Sie müssen die Hauptmethode in You can't
haben und ihre Signatur muss public class
Es gibt keinen Kompilierungsfehler
Warum würde es sein? Sie tun nichts falsch, soweit Kompilierungsregeln betroffen sind.
Einzige Sache ist, dass Ihr public static void main(String... args)
nicht als Einstiegspunkt Ihres Codes funktioniert.
Sehen Sie sich diesen Code an:
Super.java
Um Hello
zu drucken, können Sie das Programm wie folgt kompilieren und ausführen:
Wie funktioniert das?
Der Compiler generiert separate .class
-Datei für jede Klasse in Ihrem Programm. Anstatt die main()
einer nicht-öffentlichen Klasse aus der main()
der öffentlichen Klasse aufzurufen, können Sie die Ausgabe wie oben gezeigt ausgeben.
Hinweis: Wie die Konvention sagt, müssen Sie eine public class
in die separate Datei <class_name>.java
einfügen. Und fügen Sie nicht mehr als eine Klasse in eine einzige Datei ein (außer wenn es sich um eine innere Klasse handelt), denn wenn Sie sie importieren oder mit anderen Klassen verwenden möchten, wird dies zu Problemen führen.
Es gibt etwas, das ich hinzufügen möchte, obwohl jeder hier glaubt, dass ein Publikum für das Hauptteil in einer Klasse notwendig ist und dass es ohne Haupt
nicht funktionieren wirdSie können so viele Hauptleitungen in einer Klasse haben, wie Sie möchten, und Sie können sie ohne einen öffentlichen Zugriffsmodifikator haben. Aber sei vorsichtig, nur die Klasse, die nach der Datei benannt ist, kann öffentlich sein Was ich meine ist, wenn Sie Ihre Datei a.java nennen, dann kann nur die Klasse mit dem Namen a öffentlich sein, keine andere kann diese Funktion haben
Hier ist ein Code, um dies zu zeigen: Wie Sie sehen können, ist der Name der Datei helping.java
%Vor%Es ist kein Fehler bei der Kompilierung, da Sie erwähnt haben, dass die Typdeklaration der obersten Ebene nicht geschützt werden soll, weder statisch noch privat.
Wenn Sie den Link Ссылка aufrufen Nun, das hast du geteilt, dann ist es ziemlich klar, dass eine Top-Level-Typ-Deklaration nur auf "Top-Level-Klassen- und Interface-Typ-Deklarationen" verweist und diese nicht geschützt, statisch oder privat bei Top-Level-Deklarationen sein sollten , statisch oder privat für alle Methoden oder Variablendeklarationen in ihnen.
In Bezug auf obigen Code gibt es nichts Falsches in der Deklaration, und der Code wird kompiliert und erfolgreich ausgeführt, da alle äußeren Klassen der obersten Ebene standardmäßig sind und keine Verletzung vorliegt.
Die Antwort auf die oben gestellte Frage ist genau so, wie es von wenigen Experten oben gesagt wurde, dass
"Sicherlich können wir eine Datei mit main-Methode innerhalb einer nicht-öffentlichen Klasse haben und sie wird sowohl kompiliert als auch erfolgreich ausgeführt, aber stellen Sie sicher, dass wir zum Zeitpunkt der Ausführung des Programms den Klassennamen" main Methode "für den Java-Interpreter anstelle der Klasse, die öffentlich ist."
Wenn wir 2 Klassen A (public) und B (nicht-public mit main-Methode) haben, wird die Datei mit "javac A.java" kompiliert, aber während wir den Code ausführen, müssen wir den Befehl als "java B ".