加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 使用Apache Commons CLI的互斥选项

发布时间:2020-12-15 03:07:21 所属栏目:Java 来源:网络整理
导读:我可以使用以下方法创建2个互斥选项: Option a = OptionBuilder.create("a");Option b = OptionBuilder.create("b");OptionGroup optgrp = new OptionGroup();optgrp .setRequired(true);optgrp .addOption(a);optgrp .addOption(b); 以上将强制用户提供选
我可以使用以下方法创建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(...);
   }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读