gpt4 book ai didi

Java boolean CLI 选项

转载 作者:行者123 更新时间:2023-11-30 05:58:56 25 4
gpt4 key购买 nike

我正在尝试使用 Apache Commons CLI 库进行命令行解析。它适用于字符串值选项,但我不确定如何干净地处理 boolean 值命令行标志。我试过这个:

    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") 返回 true 或 false,但从文档中不清楚这意味着什么 - 这是否意味着用户指定它并且它可能是 true 或 false?或者这是否意味着标志已激活?如果您希望标志默认为真,并让用户将其关闭(如其他 getopt 解析器中的 --noParseOnly)怎么办?

我会感谢人们提出的任何建议,包括 RTFM - 我相信这是一个很好的基础。谢谢。

最佳答案

对于 boolean 选项(或标志),如果找到选项则选项值为真,否则值为假。

因此,如果用户指定-parseOnly,那么这意味着它是正确的。如果 -parseOnly 不存在,那么用户不需要它并且它是 false。

所以你需要做的就是:

 if( cl.hasOption( "parseOnly" ) ){
//do something
}

另一点:不要将字符串转换为 boolean 值。相反,使用 Boolean.valueOf(cl.getOptionValue("parseOnly")) 将字符串转换为 boolean 值。

关于Java boolean CLI 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3721936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com