Ответ @jjnguy верен в большинстве случаев. Вы никогда не увидите null
String в массиве аргументов (или null
массиве), если оно main
вызывается запуском, приложение запускается из командной строки обычным способом.
Однако, если какая-то другая часть приложения вызывает main
метод, вполне возможно, что она может передать null
аргумент или null
массив аргументов.
Однако (2) это явно очень необычный вариант использования, и это вопиющее нарушение подразумеваемого контракта для main
метода точки входа. Поэтому я не думаю, что вам следует беспокоиться о проверке null
значений аргументов в main
. В том маловероятном случае, если они все же происходят, вызывающий код может получить файл NullPointerException
. Ведь это баг в звонилке нарушать договор.
null
Проверка не нужна, но вы правы , чтоlength
проверка необходима,если я хочу проверить, передана ли какая-либо конкретная позиция аргумента командной строки или нет, то как это проверить? например, в некоторых сценариях будут переданы 2 аргумента командной строки, а в некоторых будет передан только один, тогда как он проверяет, передана ли конкретная командная строка или нет?
public class check { public static void main(String[] args) { if(args[0].length()!=0) { System.out.println("entered first if"); } if(args[0].length()!=0 && args[1].length()!=0) { System.out.println("entered second if"); } } }
Итак, в приведенном выше коде, если args [1] не передан, я получаю исключение java.lang.ArrayIndexOutOfBoundsException:
Итак, как мне решить эту проблему, где я могу проверить, прошел ли второй аргумент или нет, и если он прошел, введите его. нужна помощь как можно скорее.
источник
Если вы не передаете аргумент, то даже в этом случае args инициализируется, но без какого-либо элемента / элемента. Попробуйте следующий, вы получите тот же эффект :
public static void main(String[] args) throws InterruptedException { String [] dummy= new String [] {}; if(dummy[0] == null) { System.out.println("Proper Usage is: java program filename"); System.exit(0); } }
источник
main
метод будет вызываться сargs
массивом нулевой длины.dummy[0]
выдает исключение индекса массива за пределы !! То же самое, если вы измените программу (обратно) на тестированиеargs[0]
и запустите ее без аргументов.