Wie kann ich die main-Methode in Java selbst aufrufen?

4 Antworten

Der args-Parameter enthält die Argumente, die dem Programm bei Aufruf mitgegeben werden.

Wenn du dein Programm beispielsweise so starten würdest:

java Hello Test 123

dann stände in args:

{ "Test", "123" }

Wollte man nun die main-Methode im Programm aufrufen, müsste man erst einmal schauen, ob das args-Array in main aktiv benutzt wird oder nicht. Je nachdem sollte dann auch der Wert ausfallen.

Wenn das Array eh nie benutzt wird, reicht die Übergabe von null

Hello.main(null);

oder einem leeren Array:

Hello.main(new String[0]);

Wenn es benutzt wird, bräuchtest du ein String-Array, bei dem du entscheiden musst, welche Werte es beinhalten soll. Mit dem erneuten Aufruf von main wirst du ja ein bestimmtes Verhalten erwirken wollen.

Wie aber auch schon von den anderen Antwortgebern angemerkt, ist es kein guter Stil, main im Programm aufzurufen. Nutze stattdessen eine Schleife.

Beispiel:

public static void main(String[] args) {
  Scanner reader = new Scanner(System.in);
  String input = "";
  
  while (!input.equals("exit")) {
    input = reader.next();
    System.out.println(input);
  }

  reader.close();
}

Das Programm liest so lange Tokens aus dem Eingabekanal der Konsole und schreibt sie in den Ausgabekanal, bis der Nutzer die Schleife mit der konkreten Eingabe exit beendet.

Die Main-methode ist nur dazu da um den Ablauf des Programms zu starten, du kannst sie so gesehen nicht aufrufen.


xxxcyberxxx  11.09.2022, 14:54

Doch, es ist auch nur eine statische Methode der Klasse und kann prinzipiell aufgerufen werden. Die einzige Besonderheit ist halt, dass die Methode als Einstiegspunkt für das Programm fungieren kann

Was jedoch nicht bedeutet, dass man es tun sollte ^^

xxxcyberxxx  11.09.2022, 15:02
@TechPech1984
sehe ich nciht so , du gibts dem compiler an welche main methode der startcode sein soll und der compiliert dann auch nur den an den "anfang" .

Ich lass Mal den Link hier da zu der Diskussion.

https://stackoverflow.com/questions/17095839/is-it-possible-in-java-to-invoke-another-class-main-method-and-return-to-the-in

Auch die Antwort von Abhinav Kushagra liefert ein Beispiel

EDIT: Nvm, hast deine Antwort ja auch schon revidiert ^^
Schön ist es dennoch nicht und man sollte andere Wege wählen, wenn man den Code der Main-Methode wiederholen will.

Aber welche Argumente müssen jetzt in die Klammern rein?

Offensichtlich ein String-Array.

Die Main-Methode ist jedoch eigentlich der "Hauptablauf" des Programmes. Lagere eher die Dinge, die du wiederholen willst, in andere Funktionen aus und nutze Schleifen o.Ä., um das Programm länger laufen zu lassen.

Woher ich das weiß:Studium / Ausbildung – Abgeschlossenes Studium der Informatik (B.Sc.)