Warum brauchen wir die Hauptmethode, wenn Sie statische Blöcke haben?

8

Diese Frage wurde an jemanden gestellt, den ich kenne. Was ich mir vorstellen kann, ist, dass die Hauptmethode benötigt wird, um Befehlszeilenargumente als Methodenparameter zu akzeptieren.

Gibt es weitere Argumente zur Verteidigung von public static void main(String args[]) Methode?

    
Nishan 08.04.2011, 04:38
quelle

5 Antworten

11
  • Es ermöglicht test eine Hauptmethode
  • Es ermöglicht das Aufrufen einer Hauptmethode aus anderen Klassen
  • Es ermöglicht das mehrfache Aufrufen einer Hauptmethode, während die Typinitialisierung nur einmal auftritt
  • Es ermöglicht das Erstellen einer Instanz einer Klasse, die eine Hauptmethode enthält, ohne das Programm auszuführen.

Der Gedanke der Typinitialisierung für die "Haupt" -Klassenblockierung bis zum Abschluss der Anwendung ist abscheulich.

Könnten wir damit umgehen? Ich wage zu behaupten. Aber ich vermute, ich würde immer am Ende schreiben:

%Vor%

... und nichts anderes würde jemals EntryPoint berühren.

    
Jon Skeet 08.04.2011, 04:42
quelle
8

Statische Initialisierer und die Hauptmethode haben unterschiedliche Absichten. Der Zweck der Hauptmethode besteht darin, nur dann aufgerufen zu werden, wenn die JVM mit der enthaltenden Klasse als Hauptklasse aufgerufen wird (oder wenn sie direkt vom Code aufgerufen wird). Der Zweck von statischen Initialisierungen besteht darin, eine Klasseninitialisierung durchzuführen. Initialisierer werden immer ausgeführt, aber es ist möglich, Hauptmethoden zu verwenden, die es nicht gibt.

    
ataylor 08.04.2011 04:44
quelle
8

Zusätzlich zu den oben genannten, die Notwendigkeit für main (nicht die Eigenschaften der statischen Blöcke) ist, dass Ihre Anwendung einen Ausgangspunkt benötigt, das heißt, wenn Sie Ihre Anwendung ausführen, übergeben Sie die JVM Dutzende von Klassen und die JVM muss wissen, welche Methode zuerst aufgerufen werden muss, um Ihre Anwendung zu starten und auszuführen. Sie müssen angeben, an welchem ​​Punkt sich Ihre Anwendung befindet, da die JVM sie nicht erraten kann. (Entschuldigung für mein Englisch)

    
David Oliván Ubieto 08.04.2011 04:46
quelle
4

Statische Blöcke sollen nach dem Laden der entsprechenden Klasse ausgeführt werden. Der main() ist jedoch der Einstiegspunkt für Ihr Programm und wie Jon sagte, kann es mehrmals aufgerufen werden.

    
asgs 08.04.2011 04:42
quelle
1

Meistens wegen C.

Es wäre schön, wenn eine öffentliche statische Methode der Einstiegspunkt sein könnte, anstatt nur main

    
irreputable 08.04.2011 11:05
quelle

Tags und Links