Я получаю мочи от библиотеки CLI Apache Commons для синтаксического анализа командной строки. Он отлично работает для опций с параметрами String, но я не уверен, как правильно обрабатывать логические флаги командной строки. Я попытался это:Варианты CLI Java 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? Или это означает, что флаг активирован? Что делать, если вы хотите, чтобы флаг был по умолчанию истинным, и позволить пользователю отключить его (например, --noParseOnly в других анализаторах getopt)?
Я буду благодарен за любые предложения, которые есть у людей, включая RTFM - я уверен, что это хорошо проторенная земля. Благодарю.
использовать 'Boolean.valueOf (cl.getParsedOptionValue (" parseOnly "))' для преобразования строки в boolean – dogbane
'cl.getParsedOptionValue()' не возвращает строку, она возвращает объект, а документы говорят: Верните версию этого параметра, преобразованную в определенный тип. " К сожалению, он не говорит, как определяется этот конкретный тип. –