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 --number-headings 2-5
)时正常工作。但是如果调用的话,numberHeadings仍为null
:mycommand --number-headings
。
http://picocli.info/man/2.x/#_optional_values处的示例表明,如果未提供任何值,String
类型选项将收到空字符串。
因此,当存在选项但没有提供任何值时,空字符串是默认值。
这使我们能够区分3种情况:
null
)使用自定义ITypeConverter
时,如果没有提供值,则不会调用convert()
的{{1}}方法。那么,当选项存在但是没有为自定义类型提供值时,等效的默认值是什么?
答案 0 :(得分:1)
感谢picocli问题跟踪器上的raising this。
从picocli 3.0.0-alpha-5开始,自定义类型转换器可以将空字符串(当选项不存在时)映射到自定义默认值。此功能包含在刚刚发布的picocli 3.0.0 GA版本中。