Пикокли 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()
ITypeConverter
не вызывается, когда не указано значение. Итак, каково эквивалентное значение по умолчанию, когда опция присутствует, но не указано значение для пользовательских типов?