重置picocli选项字段

时间:2020-03-31 21:01:40

标签: java-8 picocli

我正在尝试提高here中描述的许多命令的性能。该解决方案的一部分是重用相同的Commandline对象,该对象包装了其字段包含picocli注释的对象。在某些情况下,需要在两次使用之间“重置”该对象,因为并非每个命令都设置了每个字段,并且如果某些字段具有先前实例的旧值,则会导致错误的行为。我尝试使用defaultValue批注的@Option属性,但似乎没有在每次调用时重置字段值。

我是否必须编写自己的reset()方法,还是可以用picocli来实现?

请注意,我仍在使用picocli 3.9.6,但我确实打算升级到4.x,因此,如果这是解决方案的一部分,那就没问题了。

1 个答案:

答案 0 :(得分:0)

Picocli会在紧接解析命令行参数之前自动将所有@Option@Parameter注释的字段自动重置为其默认值(可能是null)。 (这就是允许CommandLine对象被重用的原因。)不需要用户定义的reset方法。

我尝试使用@Option批注的defaultValue属性,但似乎没有在每次调用时重置字段值。

您能否提供一个可以重现此问题的示例?

或者,当您在应用程序中重现问题时,是否可以使用系统属性-Dpicocli.trace=DEBUG来运行它并发布输出?

请注意,我仍在使用picocli 3.9.6,但我确实打算升级到4.x,因此,如果这是解决方案的一部分,那就没问题了。

请升级到4.x,最新版本的picocli具有许多错误修复和新功能,并且总体而言要好得多。但是,很长一段时间以来,“重置”行为一直是picocli的一部分,当然在3.x版本中,甚至可能更早。

相关问题