我对JCommander有疑问。如果必需参数iam测试没有值,我希望程序抛出异常。当我忘记为最后一个参数添加值时,我想要这个例外。
示例(注意:所有参数都是必需和字符串):
--user hugo --password boss --confirmPassword //no value
com.beust.jcommander.ParameterException:预期参数后面的值--comfirmPassword
如果我忘记为其他参数添加值,则将下一个参数视为值。
--user --password --confirmPassword hugo
//--password is considered as the value of user
由于这种行为,无法再找到--password,我得到了错误的异常。
com.beust.jcommander.ParameterException:需要以下选项: - password
有没有办法告诉jCommander他不应该将下一个参数视为一个值?
答案 0 :(得分:1)
所以我检查了文档。
如果您确定您的参数不会以--
作为前缀,则可以单独添加参数验证。
public class IsUserName implements IParameterValidator {
public void validate(String name, String value)
throws ParameterException {
if (value.startsWith("--")) {
throw new ParameterException("probably missing user name");
}
}
}
@Parameter(names = "--user", validateWith = IsUserName.class)
private String user;
另一种选择可能是将variableArity
标志与参数验证结合使用。尝试以0长度检查参数。
看看如何完成参数验证(String,String)对,它很可能不支持变量arity参数。