Вступление
Аргументы (параметры) командной строки - это строки текста, используемые для передачи дополнительной информации программе, когда приложение запускается через интерфейс командной строки (CLI) операционной системы.
В этом руководстве мы получим доступ к аргументам (параметрам), переданным в основной метод приложения Java, и прочитаем их. Мы также сопоставим их с разными типами данных, чтобы мы могли обрабатывать их и изменять поток кода в зависимости от ввода.
Доступ к аргументам командной строки
Отправной точкой для каждой программы на Java является метод main()
:
public static void main(String[] args) {
// Do something
}
Аргументы, переданные программе при ее инициализации, хранятся в массиве
args
В качестве альтернативы Java также поддерживает vararg в этом
месте:
public static void main(String... args) {
// Do something
}
При этом мы можем легко получить доступ к каждому аргументу, переданному в этот метод. Начнем с их распечатки по очереди:
public class Main {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++)
System.out.println(String.format("Argument %d: %s", i, args[i]));
}
}
Затем мы скомпилируем этот файл .java
javac Main.java
После этого мы можем запустить его:
java Main Hello World
Это приводит к:
Argument 0: Hello
Argument 1: World
Сопоставление аргументов с типами данных
Сами аргументы представляют собой массив строк. Итак, на самом деле все, что мы передаем, - это String. Хотя мы также можем преобразовывать строки в разные типы данных:
java Main Hello 15 true
Это распечатывает:
Argument 0: Hello
Argument 1: 15
Argument 2: true
Скажем, мы хотели разрешить пользователям печатать строку заданное
количество раз и иметь флаг, который переключает сообщение журнала,
отображающее номер итерации. Таким образом, приведенные выше аргументы
будут выводить Hello
15 раз с сообщением журнала для каждого оператора
print()
Давайте сделаем это:
public class Main {
public static void main(String[] args) {
String s = "";
int n = 0;
boolean flag = false;
try {
s = args[0];
} catch (Exception e) {
System.out.println("The first argument must be present.");
System.exit(1);
}
try {
n = Integer.parseInt(args[1]);
} catch (NumberFormatException e) {
System.out.println("The second argument must be an integer.");
System.exit(1);
}
try {
flag = Boolean.parseBoolean(args[2]);
} catch (Exception e) {
System.out.println("The third argument must be parseable to boolean.");
System.exit(1);
}
for (int i = 0; i < n; i++) {
System.out.println(s);
if (flag)
System.out.println(String.format("Iteration %d", i));
}
}
}
Теперь давайте снова скомпилируем код:
javac Main.java
А затем запустим его без аргументов:
java Main
Нас встречают:
The first argument must be present.
Если мы приведем аргументы:
java Main Hello 5 true
Нас встретят:
Hello
Iteration 0
Hello
Iteration 1
Hello
Iteration 2
Hello
Iteration 3
Hello
Iteration 4
Установка аргументов в IDE
Это предполагает, что вы запускаете код через командную строку, что не всегда так. Большинство людей используют IDE для работы над своими проектами, вместо этого у них есть удобная кнопка «Выполнить».
К счастью, вы можете указать IDE передать эти аргументы в вызов run. Вот примеры того, как это можно сделать с помощью некоторых популярных IDE:
Затмение
В разделе «Выполнить» -> «Выполнить конфигурации» :
{.ezlazyload}
IntelliJ
В разделе «Выполнить» -> «Изменить конфигурации» :
{.ezlazyload}
Заключение
В этой статье мы рассмотрели, как мы можем получить доступ к аргументам командной строки, передаваемым в приложение Java при его запуске.
Затем мы сопоставили переданные аргументы с разными типами данных и обработали их соответствующим образом. Имея это в виду, легко создавать простые инструменты CLI и изменять поток кода на основе переданных аргументов.