【问题标题】:Mutually exclusive options using Apache Commons CLI使用 Apache Commons CLI 的互斥选项
【发布时间】:2015-03-05 11:28:50
【问题描述】:

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

是否可以创建互斥选项,例如:

要么:

  1. 必须提供选项 a 或
  2. 必须同时提供选项 b 和 c

我找不到使用 OptionGroup 的方法?

【问题讨论】:

    标签: java apache-commons apache-commons-cli


    【解决方案1】:

    作为一种解决方法,我实现了以下,不理想,但是..

    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(...);
       }
    }
    

    【讨论】:

    • 是的,我认为 commons-cli 中的功能没有那么远,但另一方面,它会为一些可以轻松处理的情况添加许多非常复杂的代码像你一样的图书馆。
    猜你喜欢
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    • 2013-06-15
    • 2013-11-10
    • 2011-07-31
    相关资源
    最近更新 更多