我正在尝试找到最佳解决方案,使我的 Java 应用程序可以通过命令行进行配置。我面临的问题是我需要配置复杂的嵌套结构。
示例
考虑以下结构(以大写字母开头的单词是类,缩进表示属性)
- 界面优化器
- 抽象问题
- 维度
- 人口规模
- 运行次数
- 抽象问题
我需要从命令行选择的第一件事是实现 InterfaceOptimizer
的类(例如 java App -O SomeOptimizer
)。接下来要选择的是 AbstractProblem
它本身需要另一个参数 dimension
(例如 java App -O SomeOptimizer -- -P ConcreteProblem
。
这里的问题是,某些参数是特定类的参数,并且取决于首先给出的参数。 ConcreteProblem 可能采用与 OtherProblem 不同的参数。
经过测试的库
我测试了args4j和 commons-cli ,但是当尝试做我需要的事情时,这些都失败了。
WEKA(一种流行的机器学习工具)似乎已经实现了a solution对于这个问题,但它基本上要求每个类实现它自己的 CLI 解析器(并且它们似乎存在一致性问题)。
这个问题有什么好的解决方案(现有的库吗?)?解决这个问题的推荐模式是什么?
最佳答案
我认为您可能只需要编写选择正确类的代码。之后,您可以使用反射将值放入对象中和/或验证命令行选项是否合适。注释在这里会对您有很大帮助,因为您可以使用它来帮助驱动反射引擎,以及生成文档,例如命令行帮助。
关于java - 复杂的 Java 命令行参数化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20498455/