Как видите, main исключает один аргумент функции - массив строк. JVM заботится о передаче любых аргументов командной строки в виде массива строк в основную функцию. Если аргументы не заданы, передается пустой массив - но он все еще там.
Вы могли бы также иметь свою собственную функцию, определенную следующим образом:
void myMain(String args[]) {
for(int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
Затем вы можете вызвать эту функцию, эмулируя передачу трех аргументов командной строки:
String a[] = {"foo", "bar", "bah"};
myMain(a);
Или вы можете эмулировать ситуацию, когда аргументы командной строки не указываются:
String a[] = {};
myMain(a);
Вы также можете передать args
из реального главного в вашу функцию, и она будет работать независимо от того, были ли заданы какие-либо параметры:
public static void main(String[] args) {
myMain(args);
}
Обратите внимание, что в myMain
нет проверки на нулевой указатель, поэтому, если вы передадите ему null
, он выдаст NPE.