Spiegazione del metodo Java main ()

1. Panoramica

Ogni programma ha bisogno di un posto per iniziare la sua esecuzione; parlando di programmi Java, questo è il metodo principale . Siamo così abituati a scrivere il metodo principale durante le nostre sessioni di codice, che non prestiamo nemmeno attenzione ai suoi dettagli. In questo rapido articolo, analizzeremo questo metodo e mostreremo altri modi per scriverlo.

2. Firma comune

Il modello di metodo principale più comune è:
public static void main(String[] args) { }

Questo è il modo in cui l'abbiamo imparato, è così che l'IDE completa automaticamente il codice per noi. Ma non è l'unica forma che questo metodo può assumere, ci sono alcune varianti valide che possiamo usare e non tutti gli sviluppatori prestano attenzione a questo fatto.

Prima di immergerci in quelle firme del metodo, esaminiamo il significato di ciascuna parola chiave della firma comune:

  • public - modificatore di accesso, che significa visibilità globale
  • statico : è possibile accedere al metodo direttamente dalla classe, non è necessario creare un'istanza di un oggetto per avere un riferimento e utilizzarlo
  • void - significa che questo metodo non restituisce un valore
  • main - il nome del metodo, che è l'identificativo che JVM cerca durante l'esecuzione di un programma Java

Per quanto riguarda il parametro args , rappresenta i valori ricevuti dal metodo. È così che passiamo argomenti al programma quando lo avviamo per la prima volta.

Il parametro args è un array di String s. Nell'esempio seguente:

java CommonMainMethodSignature foo bar

stiamo eseguendo un programma Java chiamato CommonMainMethodSignature e passando 2 argomenti: foo e bar . È possibile accedere a questi valori all'interno del metodo principale come args [0] (con foo come valore) e args [1] (con bar come valore).

Nel prossimo esempio, stiamo controllando gli argomenti per decidere se caricare i parametri di test o di produzione:

public static void main(String[] args) { if (args.length > 0) { if (args[0].equals("test")) { // load test parameters } else if (args[0].equals("production")) { // load production parameters } } }

È sempre bene ricordare che gli IDE possono anche passare argomenti al programma.

3. Diversi modi per scrivere un metodo main ()

Controlliamo alcuni modi diversi per scrivere il metodo principale . Sebbene non siano molto comuni, sono firme valide.

Si noti che nessuno di questi è specifico per il metodo principale , possono essere utilizzati con qualsiasi metodo Java ma sono anche una parte valida del metodo principale .

Le parentesi quadre possono essere posizionate vicino a String , come nel modello comune, o vicino agli argomenti su entrambi i lati:

public static void main(String []args) { } 
public static void main(String args[]) { }

Gli argomenti possono essere rappresentati come vararg:

public static void main(String...args) { }

Possiamo anche aggiungere strictfp per il metodo main () , che viene utilizzato per la compatibilità tra i processori quando si lavora con valori in virgola mobile:

public strictfp static void main(String[] args) { }

sincronizzato e finale sono anche parole chiave valide per il metodo principale , ma qui non avranno effetto.

D'altra parte, final può essere applicato agli argomenti per impedire che l'array venga modificato:

public static void main(final String[] args) { }

Per terminare questi esempi, possiamo anche scrivere il metodo principale con tutte le parole chiave sopra (che, ovviamente, probabilmente non utilizzerai mai in un'applicazione pratica):

final static synchronized strictfp void main(final String[] args) { }

4. Avere più di un metodo main ()

Possiamo anche definire più di un metodo principale all'interno della nostra applicazione.

In effetti, alcune persone lo usano come tecnica di test primitiva per convalidare singole classi (sebbene i framework di test come JUnit siano molto più indicati per questa attività).

Per specificare quale metodo principale la JVM deve eseguire come punto di ingresso della nostra applicazione, utilizziamo il file MANIFEST.MF . All'interno del manifest possiamo indicare la classe principale:

Main-Class: mypackage.ClassWithMainMethod

Viene utilizzato principalmente durante la creazione di un file .jar eseguibile . Indichiamo quale classe ha il metodo principale per avviare l'esecuzione, tramite il file manifest che si trova in META-INF / MANIFEST.MF (codificato in UTF-8).

5. conclusione

Questo tutorial ha descritto i dettagli del metodo principale e alcune altre forme che può assumere, anche quelle che non sono molto comuni alla maggior parte degli sviluppatori.

Tieni presente che, sebbene tutti gli esempi che abbiamo mostrato siano validi in termini di sintassi, servono solo a scopo educativo e la maggior parte delle volte ci atteniamo alla firma comune per fare il nostro lavoro.