java - args4j:如果给出/未给出另一个参数,如何使参数成为必需的?

标签 java command-line-arguments args4j

@Options(name="--in-file")
String fileName;

@Option(name="--table")
String table;

当且仅当未为 --in-file 提供任何值时,我想让 --table 选项成为必需选项。我该怎么做呢?我知道有一些解决方案(我认为至少)我可以用多个类来做到这一点,但是对于一个简单的程序中只有两个参数来说这似乎有点过分了。

我知道我也可以在解析完成后手动检查值,但这似乎违背了使用 args4j 的目的。

最佳答案

您可以像您提到的那样使用forbids

@Options(name="--in-file", forbids{"--table"})
String fileName;

@Option(name="--table", forbids={"--in-file"})
String table;

你可以在你的类中添加检查条件。

if (fileName == null && table == null) {
    throw new CmdLineException();
}

您可以将异常消息设置为与设置必需选项时显示的消息相同。

关于java - args4j:如果给出/未给出另一个参数,如何使参数成为必需的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28161838/

相关文章:

c++ - 清除预处理宏

java - 如何使用 JCommander 添加命令行参数依赖?

java - arg4j 的多个参数

java - 为第 3 方 REST API 创建 Apache Camel 组件?

java - 使用 Java 获取 CSS 文件中图像的 URL?

java - 如何从java中的文本文件读取数据,条件是数据必须从一个位置读取到另一个位置

java - 从databricks连接到数据库时获取java.lang.ClassNotFoundException : com. mysql.jdbc.Driver

python - 将目录作为命令行参数传递给 python 脚本

Python 命令行参数可以为空或来自选择列表

java - 如何将字符串拆分为 shell 之类的参数?