我正在尝试使用以下导入:
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
),为什么会这样呢?