Un’applicazione Java può accettare qualsiasi numero di argomenti dalla riga di comando. Questo permette all’utente di specificare informazioni di configurazione quando l’applicazione viene lanciata.
L’utente inserisce gli argomenti della linea di comando quando invoca l’applicazione e li specifica dopo il nome della classe da eseguire. Per esempio, supponiamo che un’applicazione Java chiamata Sort
ordini le righe di un file. Per ordinare i dati in un file chiamato friends.txt
, un utente dovrebbe inserire:
java Sort friends.txt
Quando un’applicazione viene lanciata, il sistema di runtime passa gli argomenti della riga di comando al metodo principale dell’applicazione tramite un array di String
s. Nell’esempio precedente, gli argomenti della riga di comando sono passati all’applicazione Sort
in un array che contiene un singolo String
"friends.txt"
.
Echoing Command-Line Arguments
L’esempio
visualizza ciascuno dei suoi argomenti della linea di comando su una riga a sé:Echo
public class Echo { public static void main (String args) { for (String s: args) { System.out.println(s); } }}
L’esempio seguente mostra come un utente potrebbe eseguire Echo
. L’input dell’utente è in corsivo.
java Echo Drink Hot JavaDrinkHotJava
Nota che l’applicazione visualizza ogni parola Drink
Hot
, e Java
su una linea da sola. Questo perché il carattere spazio separa gli argomenti della linea di comando. Per far sì che Drink
Hot
, e Java
vengano interpretati come un unico argomento, l’utente dovrebbe unirli racchiudendoli tra virgolette.
java Echo "Drink Hot Java"Drink Hot Java
Parlare di argomenti numerici da riga di comando
Se un’applicazione ha bisogno di supportare un argomento numerico da riga di comando, deve convertire un String
argomento che rappresenta un numero, come “34”, in un valore numerico. Ecco uno snippet di codice che converte un argomento della riga di comando in un int
:
int firstArg;if (args.length > 0) { try { firstArg = Integer.parseInt(args); } catch (NumberFormatException e) { System.err.println("Argument" + args + " must be an integer."); System.exit(1); }}
parseInt
lancia un NumberFormatException
se il formato di args
non è valido. Tutte le classi Number
Integer
Float
Double
, e così via hanno metodi parseXXX
che convertono un String
che rappresenta un numero in un oggetto del loro tipo.