Я промочил ноги с помощью библиотеки 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" )
возвращает значение true или false, но из документов неясно, что это означает - означает ли это, что пользователь указал его, и это может быть либо true, либо false?Или это означает, что флаг активирован?Что, если вы хотите, чтобы флаг был значением по умолчанию true и позволил пользователю отключить его (как --noParseOnly в других парсерах getopt)?
Я буду признателен за любые предложения, в том числе и RTFM -уверен, что это проторенная земля.Спасибо.