Понимание того, как работает hasOptionalArgs - PullRequest
0 голосов
/ 13 июня 2019

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

import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Options;

Для разбора параметров командной строки. До сих пор у нас была опция с аргументами:

Option report = OptionBuilder
        .withLongOpt(ArgNames.REPORT.toString().toLowerCase()).hasArgs().create();

Теперь я хотел бы, чтобы программа использовалась также без аргументов, то есть я мог бы использовать:

--report 5
--report "ABC"
--report

Последнее использование без аргументов. Поэтому я изменил hasArgs на hasOptionalArgs:

Option report = OptionBuilder
        .withLongOpt(ArgNames.REPORT.toString().toLowerCase()).hasOptionalArgs().create());

Но по какой-то причине, когда я печатаю (при использовании --report без аргументов):

System.out.println(report.hasArgs());
System.out.println(report.getArgs());

Вывод:

true
-2

Почему это правда, если я не использовал никаких аргументов (--report)?

...