JCommander参数验证了解其他参数

时间:2015-07-25 21:57:55

标签: java jcommander

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

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

我遇到了边缘情况,如果上面的代码块可以知道为应用程序提供的其他命令行参数是什么,而不仅仅是那个。是否可以使用JCommander?

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

2 个答案:

答案 0 :(得分:1)

我通过使变量进行测试来实现这一点,静态。例如:

@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 +")");
        }
    }
}

答案 1 :(得分:1)

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

建议在parmeter解析后进行验证。