Java: Проверьте, являются ли аргументы командной строки нулевыми
Я ищу, чтобы сделать некоторые ошибки проверки для моих аргументов командной строки
public static void main(String[] args)
{
if(args[0] == null)
{
System.out.println("Proper Usage is: java program filename");
System.exit(0);
}
}
однако это возвращает исключение массива вне границ, что имеет смысл. Я просто ищу правильное использование.
5 ответов:
аргументы никогда не могут быть
null
. Они просто не будут существовать.public static void main(String[] args) { // Check how many arguments were passed in if(args.length == 0) { System.out.println("Proper Usage is: java program filename"); System.exit(0); } }
@jjnguy ответ Правильный в большинстве случаев. Вы никогда не увидите
null
строка в массиве аргументов (илиnull
массив), еслиmain
вызывается при запуске приложение запускается из командной строки в обычном режиме.однако, если какая-то другая часть приложения вызывает a
main
метод, вполне возможно, что он может пройтиnull
аргумент илиnull
массив аргументов.однако(2), это явно очень необычный случай использования, и это вопиющее нарушение подразумеваемого контракта для
main
запись-метод. Поэтому, я не думаю, что вы должны беспокоиться о проверкеnull
значения аргументов вmain
. В маловероятном случае, если они происходят, это приемлемо для вызывающего кода, чтобы получитьNullPointerException
. В конце концов, это ошибка в вызывающем абоненте, чтобы нарушить контракт.
чтобы расширить этот пункт:
возможно, что сама переменная args будет null, но не через обычное выполнение. Нормальное выполнение будет использовать
java.exe
как точка входа из командной строки. Тем не менее, я видел некоторые программы, которые используют compiledC++
код с JNI для использованияjvm.dll
, минуя java.исполняемые полностью. В этом случае можно пройтиNULL
к основному методу, в этом случае args будет null.Я рекомендую всегда проверять
if ((args == null) || (args.length == 0))
илиif ((args != null) && (args.length > 0))
в зависимости от ваших потребностей.
вы должны проверить для
(args == null || args.length == 0)
. Хотя чемnull
регистрация не нужна, это хорошая практика.
Если вы не передаете никаких аргументов, то даже в этом случае 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); } }