Java Args4j:是否可以通过两个(或多个)选项选择一个且唯一的选项?

Java Args4j:是否可以通过两个(或多个)选项选择一个且唯一的选项?,java,args4j,Java,Args4j,假设我在args4j中有两个选项: @Option(name = "-a") boolean a; @Option(name = "-b") boolean b; 有没有可能,通过注释,说我想要的是a或b(并且只有一个) 谢谢 仅使用注释是不可能的。但是可以使用注释和一次检查 您可以在注释中使用禁止,对选项设置最多一个约束 @Options(name="-a1", forbids{"-a2", "-a3", /*...*/, "-aN"}) T a1; @Options(name="-a2

假设我在args4j中有两个选项:

@Option(name = "-a")
boolean a;

@Option(name = "-b")
boolean b;
有没有可能,通过注释,说我想要的是a或b(并且只有一个)


谢谢

仅使用注释是不可能的。但是可以使用注释和一次检查

您可以在注释中使用
禁止
,对选项设置最多一个约束

@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();
}
您可以将异常消息设置为与当
必需时显示的消息相同
选项设置为一致性。

现在不推荐使用所有“简单”CmdLineException构造函数。非弃用版本要么需要一次性的,要么像您提到的那样需要本地化版本。问题在于,用于复制缺少的必需选项的所有代码都是包私有的,并且依赖于args4j ResourceBundle。你有解决办法吗?