Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Использование аргументов командной строки




Использование аргументов командной строки

Иногда будет требоваться передать определенную информацию программе во время ее запуска. Для этого используют аргументы командной строки метода main(). Аргумент командной строки – это информация, которую во время запуска программы задают в командной строке непосредственно после ее имени. Доступ к аргументам командной строки внутри Java-программы не представляет сложности – они хранятся в виде строк в массиве String, переданного методу main(). Первый аргумент командной строки хранится в элементе массива args[0], второй – в элементе args[0] и т. д. Например, следующая программа отображает все аргументы командной строки, с которыми она вызывается.

// Отображение всех аргументов командной строки.

class CommandLine {

public static void main(String args[]) {

for(int i=0; i< args. length; i++)

System. out. println(" args[" + i + " ]: " +

args[i]);

}

}

Попытайтесь выполнить эту программу, введя следующую строку:

· java CommandLine this is a test 100 -1

В результате отобразится следующий вывод:

args[0]: this

args[1]: is

args[2]: a

args[3]: test

args[4]: 100

args[5]: -1

Все аргументы командной строки передаются как строки. Численные значения нужно вручную преобразовать в их внутренние представления.

Аргументы переменной длины

В JDK 5 была добавлена новая функциональная возможность, которая упрощает создание методов, принимающих переменное количество аргументов. Эта функциональная возможность получила название varargs (сокращение термина variable-length arguments – аргументы переменной длины). Метод, который принимает переменное число аргументов, называют методом переменной арности, или просто методом varargs.

Ситуации, в которых методу нужно передавать переменное количество аргументов, встречаются не так уж редко. Например, метод, который открывает подключение к Internet, может принимать имя пользователя, пароль, имя файла, протокол и тому подобное, но применять значения, заданные по умолчанию, если какие-либо из этих сведений опущены. В этой ситуации было бы удобно передавать только те аргументы, для которых заданные по умолчанию значения не применимы. Еще один пример – метод printf(), входящий в состав библиотеки ввода-вывода Java.

// Использование массива для передачи методу переменного

// количества аргументов. Это старый стиль подхода

// к обработке аргументов переменной длины.

class PassArray {

static void vaTest(int v[]) {

System. out. print(" Количество аргументов: " + v. length +

" Содержимое: " );

for(int x: v)

System. out. print(x + " " );

System. out. println();

}

public static void main(String args[])

{

// Обратите внимание на способ создания массива

// для хранения аргументов.

int n1[] = { 10 };

int n2[] = { 1, 2, 3 };

int n3[] = { };

vaTest(n1); // 1 аргумент

vaTest(n2); // 3 аргумента

vaTest(n3); // без аргументов

}

}

Эта программа создает следующий вывод:

Количество аргументов: 1 Содержимое: 10

Количество аргументов: 3 Содержимое: 1 2 3

Количество аргументов: 0 Содержимое:

В программе методу vaTest() аргументы передаются через массив v. Этот старый подход к обработке аргументов переменной длины позволяет методу vaTest() принимать любое число аргументов. Однако он требует, чтобы эти аргументы были вручную помещены в массив до вызова метода vaTest(). Создание массива при каждом вызове метода vaTest() не только трудоемкая, но и чреватая ошибками задача. Функциональная возможность использования методов varargs обеспечивает более простой и эффективный подход.

Для указания аргумента переменной длины используют три точки (... ). Например, вот как метод vaTest() можно записать с использованием аргумента переменной длины:

static void vaTest(int... v) {

Эта синтаксическая конструкция указывает компилятору, что метод vaTest() может вызываться с нулем или более аргументов. В результате v неявно объявляется как массив типа int[]. Таким образом, внутри метода vaTest() доступ к v осуществляется с использованием синтаксиса обычного массива. Предыдущая программа с применением метода vararg приобретает следующий вид:

// Демонстрация использования аргументов переменной длины.

class VarArgs {

// теперь vaTest() использует аргументы переменной длины.

static void vaTest(int... v) {

System. out. print(" Количество аргументов: " + v. length +

" Содержимое: " );

For(int x: v)

System. out. print(x + " " );

System. out. println();

}

public static void main(String args[])

{

// Обратите внимание на возможные способы вызова

// vaTest() с переменным числом аргументов.

vaTest(10); // 1 аргумент

vaTest(1, 2, 3); // 3 аргумента

vaTest(); // без аргументов

}

}

Вывод этой программы совпадает с выводом исходной версии.

Наряду с параметром переменной длины массив может содержать “нормальные” параметры. Однако параметр переменной длины должен быть последним параметром, объявленным методом. Существует еще одно ограничение, о котором следует знать: метод должен содержать только одни параметр типа varargs.

Метод, который принимает аргумент переменной длины, можно перегружать.

// Параметры vararg и перегрузка.

class VarArgs3 {

static void vaTest(int... v) {

System. out. print(" vaTest(int... ): " +

" Количество аргументов: " + v. length +

" Содержимое: " );

for(int x: v)

System. out. print(x + " " );

System. out. println();

}

static void vaTest(boolean... v) {

System. out. print(" vaTest(boolean... ) " +

" Количество аргументов: " + v. length +

" Содержимое: " );

for(boolean x: v)

System. out. print(x + " " );

System. out. println();

}

static void vaTest(String msg, int... v) {

System. out. print(" vaTest(String, int... ): " +

msg + v. length +

" Содержимое: " );

for(int x: v)

System. out. print(x + " " );

System. out. println();

}

public static void main(String args[])

{

vaTest(1, 2, 3);

vaTest(" Проверка: ", 10, 20);

vaTest(true, false, false);

}

}

Эта программа создает следующий вывод:

vaTest(int... ): Количество аргументов: 3 Содержимое: 1 2 3

vaTest(String, int... ): Проверка: 2 Содержимое: 10 20

vaTest(boolean... ) Количество аргументов: 3 Содержимое: true false false

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...