想象一下,我在 args4j 中有这两个选项:
@Option(name = "-a")
boolean a;
@Option(name = "-b")
boolean b;
是否有可能通过注释说我想要 a 或 b (并且只有其中一个)
谢谢!
不可能只使用注释。但是可以通过注释和一次检查来完成。
您可以使用forbids
in annotations 为您的选项设置 At-Most-One 约束。
@Options(name="-a1", forbids{"-a2", "-a3", /*...*/, "-aN"})
T a1;
@Options(name="-a2", forbids{"-a1", "-a3", /*...*/, "-aN"})
T a2;
/*...*/
@Options(name="-aN", forbids{"-a1", "-a2", /*...*/, "-a(N-1)"})
T aN;
您可以在您的班级中添加一项检查以对您的选项设置至少一个约束。
if (a1 == null && a2 == null && /*...*/ && aN == null) {
throw new CmdLineException();
}
您可以设置与选项设置时显示的消息相同的异常消息required
以保持一致性。