使用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:

Option c = OptionBuilder.create("c");

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

任何一个:

  1. 必须提供选项a或
  2. 必须同时提供选项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(...);
   }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Apache Commons CLI(选项)

来自分类Dev

在不带连字符的Apache Commons CLI中使用选项

来自分类Dev

Apache Commons CLI:如何防止对选项使用短名称?

来自分类Dev

Apache Commons CLI-重复的选项

来自分类Dev

使用apache commons cli定义位置参数

来自分类Dev

Apache Commons CLI参数值

来自分类Dev

Apache Commons CLI参数值

来自分类Dev

Apache Commons CLI 1.3.1:在带有多个参数的另一个选项之后的选项被作为ARGUMENT使用

来自分类Dev

如何导入 jar apache commons cli

来自分类Dev

使用commons-cli创建子命令

来自分类Dev

Apache Commons CLI:是否已取代已弃用的OptionBuilder?

来自分类Dev

Apache Commons CLI无法按预期进行解析?

来自分类Dev

获取 apache.commons.cli.CommandLine 作为字符串

来自分类Dev

使用Apache Commons Collections中的MultiValueMap

来自分类Dev

使用Apache Commons Math插值函数

来自分类Dev

使用Apache Commons HttpClient上传SmbFile

来自分类Dev

使用Apache Commons数学所需的指导

来自分类Dev

使用Apache Commons的DecodeBase64

来自分类Dev

使用Apache Commons Math所需的指导

来自分类Dev

Apache Commons Unzip方法?

来自分类Dev

命令行中Commons CLI空选项

来自分类Dev

Apache Commons Lang HashCodeBuilder冲突

来自分类Dev

Apache Commons Lang 2与3

来自分类Dev

Apache Commons Configuration Cant保存

来自分类Dev

Apache Commons CSV跳过行

来自分类Dev

Apache Class Commons Math的NoClassDefFoundError

来自分类Dev

无法导入Apache Commons Jars

来自分类Dev

Apache Commons Crypto - 获取 IllegalBlockSizeException

来自分类Dev

Apache commons 配置 spring 集成