我正在使用 Apache Commons CLI 库进行命令行解析。它适用于字符串值选项,但我不确定如何干净地处理布尔值命令行标志。我试过这个:
CommandLineParser parser = new GnuParser();
Options options = new Options();
options.addOption(new Option("parseOnly", "Only parse"));
CommandLine cl = parser.parse( options, args );
if( cl.hasOption( "parseOnly" ) )
PARSE_ONLY = (Boolean) cl.getParsedOptionValue( "parseOnly" );
但这NullPointerException
在文件行上失败,因为cl.getParsedOptionValue()
返回null
并且不能转换为Boolean
.
cl.hasOption( "parseOnly" )
返回真或假,但从文档中不清楚这意味着什么 - 这是否意味着用户指定了它并且它可能是真或假?或者这是否意味着标志被激活?如果您希望一个标志默认为真,并让用户将其关闭(如其他 getopt 解析器中的 --noParseOnly )怎么办?
我会很感激人们提出的任何建议,包括 RTFM - 我相信这是一个很好的基础。谢谢。