如何使用 args4j 验证选项?
How can I validate options with args4j?
使用以下代码,
@Option(name = "age") // min = "1"
private int age;
如何验证 age
字段?说必须大于零?
您可以在 void methodName(T value)
形式的方法上放置 Option
注释。
所以您可以通过以下方式轻松完成。
private int age;
@Option(name = "age")
void setAge(int age) {
if (age < 1) {
throw new CmdLineException("message");
}
this.age = age;
}
我自己用 bean-validation
解决了问题。
一旦我像这样注释了那些 @Option
,
class Opts {
@Option(name = "-buffer-capacity",
usage = "each buffer's capacity in bytes")
@Min(1024)
private int bufferCapacity = 65536;
@Option(name = "-buffer-count", required = true,
usage = "number of buffers to allocate")
@Min(1)
@Max(1024)
private int bufferCount;
}
我可以使用 bean-validation
来验证它。
final Opts opts;
final ValidatorFactory factory
= Validation.buildDefaultValidatorFactory();
final Validator validator = factory.getValidator();
final Set<ConstraintViolation<Opts>> violations
= validator.validate(opts);
使用以下代码,
@Option(name = "age") // min = "1"
private int age;
如何验证 age
字段?说必须大于零?
您可以在 void methodName(T value)
形式的方法上放置 Option
注释。
所以您可以通过以下方式轻松完成。
private int age;
@Option(name = "age")
void setAge(int age) {
if (age < 1) {
throw new CmdLineException("message");
}
this.age = age;
}
我自己用 bean-validation
解决了问题。
一旦我像这样注释了那些 @Option
,
class Opts {
@Option(name = "-buffer-capacity",
usage = "each buffer's capacity in bytes")
@Min(1024)
private int bufferCapacity = 65536;
@Option(name = "-buffer-count", required = true,
usage = "number of buffers to allocate")
@Min(1)
@Max(1024)
private int bufferCount;
}
我可以使用 bean-validation
来验证它。
final Opts opts;
final ValidatorFactory factory
= Validation.buildDefaultValidatorFactory();
final Validator validator = factory.getValidator();
final Set<ConstraintViolation<Opts>> violations
= validator.validate(opts);