gpt4 book ai didi

Java Apache CLI OptionBuilder 不作为生成器模式工作

转载 作者:太空狗 更新时间:2023-10-29 22:38:44 28 4
gpt4 key购买 nike

我想做类似的事情

public static final Option job1 =
OptionBuilder.hasArg(false)
.isRequired(false)
.withDescription("description of job1")
.create(JOB1);

如前所述How to specify multiple options using 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 类用一个公共(public)的无参数构造函数和实例方法重写会更好,从而表现得像其他所有构建器一样。 commons-cli 问题跟踪器中存在一个突出显示这一点的错误:https://issues.apache.org/jira/browse/CLI-224

更新:我的补丁已提交到主干,因此下一个版本的 commons-cli (v1.3) 中将提供一个新的“合适的”构建器。参见 Javadocs here .

关于Java Apache CLI OptionBuilder 不作为生成器模式工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12466955/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com