Java Picocli,如何通过可选值和自定义类型转换器识别选项的存在

Java Picocli,如何通过可选值和自定义类型转换器识别选项的存在,java,picocli,Java,Picocli,Picocli v2.3.0 @CommandLine.Option(names = {"--number-headings"}, arity = "0..1", paramLabel = "levels", description = {"Adds numbers to headings. Optional parameter to set the heading levels to be numbered.", "eg. 2-4"}) public HeadingNumberingRange

Picocli v2.3.0

@CommandLine.Option(names = {"--number-headings"}, arity = "0..1", paramLabel = "levels", description = {"Adds numbers to headings. Optional parameter to set the heading levels to be numbered.", "eg. 2-4"})
public HeadingNumberingRange numberHeadings;
提供值时,自定义类型转换器已注册并正常工作(
mycommand——数字标题2-5
)。但是numberhadings仍然是
null
,如果像这样调用:
mycommand——数字标题

示例at建议键入的
字符串
选项在未提供值时将接收空字符串

因此,当存在选项但未提供任何值时,空字符串是默认值

这使我们能够区分3种情况:

  • 选项不存在(我们得到
    null
  • 选项不带值(我们得到空字符串)
  • 有价值的期权(我们获得价值)
  • 对于自定义的
    itypecoverter
    ,当没有提供值时,不会调用
    itypecoverter
    convert()
    方法。那么,当存在选项但没有为自定义类型提供值时,等效的默认值是多少?

    感谢picocli问题跟踪器上的介绍

    从picocli开始,自定义类型转换器可以将空字符串(当选项不带值时)映射到自定义默认值。这个功能包含在刚刚发布的GA版本中