Apache Commons CLI - 选项类型和默认值
2022-09-01 01:56:31
如何为 CLI 选项指定一种类型 - 例如 或 ?(稍后,如何通过单个函数调用获取解析的值?int
Integer
如何为 CLI 选项指定默认值?这样或上面提到的函数调用返回该值,除非在命令行上指定了一个值?CommandLine.getOptionValue()
如何为 CLI 选项指定一种类型 - 例如 或 ?(稍后,如何通过单个函数调用获取解析的值?int
Integer
如何为 CLI 选项指定默认值?这样或上面提到的函数调用返回该值,除非在命令行上指定了一个值?CommandLine.getOptionValue()
编辑:现在支持默认值。请参阅下面的答案 https://stackoverflow.com/a/14309108/1082541。
正如布伦特沃登已经提到的,默认值不受支持。
我也遇到了使用问题。在调用类型为.因为文档没有真正的帮助,所以我研究了源代码。Option.setType
getParsedOptionValue
Integer.class
查看 TypeHandler 类和 PatternOptionBuilder 类,您可以看到必须用于 或 。Number.class
int
Integer
这里有一个简单的例子:
CommandLineParser cmdLineParser = new PosixParser();
Options options = new Options();
options.addOption(OptionBuilder.withLongOpt("integer-option")
.withDescription("description")
.withType(Number.class)
.hasArg()
.withArgName("argname")
.create());
try {
CommandLine cmdLine = cmdLineParser.parse(options, args);
int value = 0; // initialize to some meaningful default value
if (cmdLine.hasOption("integer-option")) {
value = ((Number)cmdLine.getParsedOptionValue("integer-option")).intValue();
}
System.out.println(value);
} catch (ParseException e) {
e.printStackTrace();
}
请记住,如果提供的数字不适合 .value
int