![](/img/trans.png)
[英]Apache Commons CLI: replacement for deprecated OptionBuilder?
[英]Java Apache CLI OptionBuilder not working as Builder pattern
我想做点什么
public static final Option job1 =
OptionBuilder.hasArg(false)
.isRequired(false)
.withDescription("description of job1")
.create(JOB1);
如上所述如何使用apache commons cli指定多个选项?
我正在使用maven依赖
<dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
<version>1.1</version>
</dependency>
如上所述 - http://mvnrepository.com/artifact/commons-cli/commons-cli/1.1
但我无法,编译器抱怨
static member org.apache.commons.cli.OptionsBuilder.create() accessed via instance reference
,我甚至试过<version>1.2</version>
,但没有运气,我错过了什么?
问题是OptionBuilder
中的每个方法都是静态的,在静态字段上运行并返回单个静态实例。 因此,您不需要OptionBuilder
的实例来执行这些方法。 正如你所做的那样,这并不能很好地满足将呼叫联系在一起的自然愿望。
除了冷却编译器(可能在IDE中禁用警告?)或调整代码如下(未经测试)之外,没有其他解决方案:
public static final Option job1;
static {
OptionBuilder.hasArg(false);
OptionBuilder.isRequired(false)
OptionBuilder.withDescription("description of job1")
job1 = OptionBuilder.create(JOB1);
}
如果使用公共无参数构造函数和仅实例方法重写OptionBuilder
类会更好,因此其行为与其他所有构建器一样。 commons-cli问题跟踪器中存在一个现有错误,突出显示: https : //issues.apache.org/jira/browse/CLI-224
更新:我的补丁已经提交到trunk,因此下一版commons-cli(v1.3)中将提供一个新的“正确”构建器。 在这里查看Javadocs 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.