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

时间:2018-04-05 13:41:27

标签: 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 numberHeadings;

自定义类型转换器已注册并在提供值(mycommand --number-headings 2-5)时正常工作。但是如果调用的话,numberHeadings仍为nullmycommand --number-headings

http://picocli.info/man/2.x/#_optional_values处的示例表明,如果未提供任何值,String类型选项将收到空字符串。

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

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

  1. 选项不存在(我们获得null
  2. 没有值的选项(我们得到空字符串)
  3. 带有价值的选项(我们得到价值)
  4. 使用自定义ITypeConverter时,如果没有提供值,则不会调用convert()的{​​{1}}方法。那么,当选项存在但是没有为自定义类型提供值时,等效的默认值是什么?

1 个答案:

答案 0 :(得分:1)

感谢picocli问题跟踪器上的raising this

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