сбросить поле параметров picocli - PullRequest
1 голос
/ 01 апреля 2020

Я пытаюсь улучшить производительность многих команд, как описано здесь . Частью этого решения является повторное использование того же объекта Commandline, который оборачивает объект, поля которого содержат аннотации picocli. В некоторых случаях этот объект необходимо «сбрасывать» между использованиями, так как не каждое поле задается каждой командой, и если некоторые поля имеют старые значения из предыдущего экземпляра, это приводит к неправильному поведению. Я пытался использовать атрибут defaultValue аннотации @Option, но, похоже, он не сбрасывал значение поля при каждом вызове.

Нужно ли мне писать собственный метод reset() или Есть ли способ выполнить sh это с помощью picocli?

Примечание. Я все еще использую picocli 3.9.6, но я планирую перейти на 4.x, поэтому, если это часть решения, это нормально. .

1 Ответ

0 голосов
/ 01 апреля 2020

Picocli автоматически сбрасывает все поля, помеченные @Option и @Parameter, на значения по умолчанию (которые могут быть null) непосредственно перед анализом аргументов командной строки. (Это то, что позволяет CommandLine объектам использоваться повторно.) Нет необходимости в определяемом пользователем методе reset.

Я попытался использовать атрибут defaultValue аннотации @Option, но он не сбрасывал значение поля при каждом вызове.

Можете ли вы привести пример, воспроизводящий эту проблему?

В качестве альтернативы, когда вы воспроизводите проблему в своем приложении, Можете ли вы запустить его с системным свойством -Dpicocli.trace=DEBUG и опубликовать вывод?

Примечание. Я все еще на Picocli 3.9.6, но я планирую обновить до 4.x, так что если это часть решения, это хорошо.

Пожалуйста, обновите до 4.x, последняя версия picocli имеет много исправлений ошибок и новых функций, и в целом намного лучше. Однако поведение «перезагрузки» долгое время было частью picocli, конечно, в версии 3.x, возможно, даже раньше.

...