【问题标题】:JCommander parameter validation aware of other parametersJCommander 参数验证知道其他参数
【发布时间】:2015-10-16 08:48:18
【问题描述】:

我正在使用 JCommander 来解析命令行参数。我使用以下方法验证参数:

public class SomeClass implements IParameterValidator {
    public void validate(String name, String value) throws ParameterException { 
    ...
}

我遇到了一些极端情况,如果上面的代码块可以知道为应用程序提供的其他命令行参数是什么,而不仅仅是那个,这将很有帮助。 JCommander 有可能吗?

我可以使用 JCommander Commands 实现我的目标,但这不像所需的解决方案那样灵活。

【问题讨论】:

    标签: java jcommander


    【解决方案1】:

    文档清楚地表明没有特定的注释来对提供的参数进行全局验证。 http://jcommander.org/#global_validation

    建议在参数解析后进行校验。

    【讨论】:

      【解决方案2】:

      我通过将要测试的变量设为静态来实现这一点。例如:

      @Parameter(names = {"big"}, description = "This must be greater than small", validateValueWith = GreaterThanSmall.class)
      private Long big = 10000L;
      
      @Parameter(names = {"small"}, description = "Small")
      private static Long small = 10L;
      
      public static class GreaterThanSmall implements IValueValidator<Long> {
          @Override
          public void validate(String name, Long value) throws ParameterException {
              if (value < small) {
                  throw new ParameterException("Parameter " + name + " should be greater than small (found " + value +")");
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2014-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-11
        • 1970-01-01
        • 1970-01-01
        • 2021-01-08
        • 2021-08-23
        相关资源
        最近更新 更多