Come si vede, principale eccezione un argomento di funzione - che è una matrice di stringhe. JVM si occupa di passare qualsiasi argomento della riga di comando come una matrice di stringhe alla funzione principale. Se non ci sono argomenti dati, viene passato un array vuoto - ma è ancora lì.
Si potrebbe anche avere la propria funzione definita come questo:
void myMain(String args[]) {
for(int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
È quindi possibile chiamare questa funzione, emulando che passano tre argomenti della riga di comando:
String a[] = {"foo", "bar", "bah"};
myMain(a);
Oppure si può emulare situazione dove non vengono forniti argomenti della riga di comando:
String a[] = {};
myMain(a);
È anche possibile passare args
dal reale principale per la funzione e funzionerà a prescindere se i parametri sono stati dati o no:
public static void main(String[] args) {
myMain(args);
}
Nota che non c'è nulla di controllo puntatore nella myMain
quindi se si passa un null
si getterà NPE.
Puoi essere più chiaro, come stai eseguendo l'applicazione con e senza parametri? – medopal
Risposta correlata, puoi fare lo stesso in questo modo 'public public myMethod (String ... array)' in questo modo puoi passare nay numero di argomenti anche 0, e non darà errore. – medopal