了解hasOptionalArgs的工作原理

时间:2019-06-12 23:49:35

标签: java apache-commons-cli

我正在尝试使用以下导入:

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),为什么会这样呢?

0 个答案:

没有答案