使用 Apache Commons CLI 的互斥选项
Mutually exclusive options using Apache Commons CLI
我可以使用以下方法创建 2 个互斥选项:
Option a = OptionBuilder.create("a");
Option b = OptionBuilder.create("b");
OptionGroup optgrp = new OptionGroup();
optgrp .setRequired(true);
optgrp .addOption(a);
optgrp .addOption(b);
以上将强制用户提供选项 a 或选项 b。
但如果我有第三个选择,c: [=2=]
Option c = OptionBuilder.create("c");
是否可以创建互斥选项,以便:
或者:
- 必须提供选项 a 或
- 必须同时提供选项 b 和 c
我找不到使用 OptionGroup 的方法吗?
作为解决此问题的方法,我实施了以下操作,但并不理想,但是..
public static void validate(final CommandLine cmdLine) {
final boolean aSupplied = cmdLine.hasOption(A);
final boolean bAndCSupplied = cmdLine.hasOption(B) && cmdLine.hasOption(C);
final boolean bOrCSupplied = !bAndCSupplied && (cmdLine.hasOption(B) || cmdLine.hasOption(C));
if ((aSupplied && bAndCSupplied) || (!aSupplied && !bAndCSupplied)
|| (aSupplied && bOrCSupplied )) {
throw new Exception(...);
}
}
我可以使用以下方法创建 2 个互斥选项:
Option a = OptionBuilder.create("a");
Option b = OptionBuilder.create("b");
OptionGroup optgrp = new OptionGroup();
optgrp .setRequired(true);
optgrp .addOption(a);
optgrp .addOption(b);
以上将强制用户提供选项 a 或选项 b。
但如果我有第三个选择,c: [=2=]
Option c = OptionBuilder.create("c");
是否可以创建互斥选项,以便:
或者:
- 必须提供选项 a 或
- 必须同时提供选项 b 和 c
我找不到使用 OptionGroup 的方法吗?
作为解决此问题的方法,我实施了以下操作,但并不理想,但是..
public static void validate(final CommandLine cmdLine) {
final boolean aSupplied = cmdLine.hasOption(A);
final boolean bAndCSupplied = cmdLine.hasOption(B) && cmdLine.hasOption(C);
final boolean bOrCSupplied = !bAndCSupplied && (cmdLine.hasOption(B) || cmdLine.hasOption(C));
if ((aSupplied && bAndCSupplied) || (!aSupplied && !bAndCSupplied)
|| (aSupplied && bOrCSupplied )) {
throw new Exception(...);
}
}