我可以使用以下方法创建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:
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(...); } }