day*_*mer 17 java apache command-line-interface
我想做点什么
public static final Option job1 =
OptionBuilder.hasArg(false)
.isRequired(false)
.withDescription("description of job1")
.create(JOB1);
Run Code Online (Sandbox Code Playgroud)
如上所述如何使用apache commons cli指定多个选项?
我正在使用maven依赖
<dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
<version>1.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
如上所述 - 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>,但没有运气,我错过了什么?
Dun*_*nes 29
问题是每个方法OptionBuilder都是静态的,在静态字段上操作并返回单个静态实例.因此,您不需要OptionBuilder执行方法的实例.正如你所做的那样,这并不能很好地满足将呼叫联系在一起的自然愿望.
除了冷却编译器(可能在IDE中禁用警告?)或调整代码如下(未经测试)之外,没有其他解决方案:
public static final Option job1;
static {
OptionBuilder.hasArg(false);
OptionBuilder.isRequired(false)
OptionBuilder.withDescription("description of job1")
job1 = OptionBuilder.create(JOB1);
}
Run Code Online (Sandbox Code Playgroud)
如果OptionBuilder使用公共无参数构造函数和仅实例方法重写类,那将会更好,因此表现得像其他所有构建器一样.commons-cli问题跟踪器中存在一个现有错误,突出显示:https://issues.apache.org/jira/browse/CLI-224
更新:我的补丁已经提交到trunk,因此下一版commons-cli(v1.3)中将提供一个新的"正确"构建器.在这里查看Javadocs.
| 归档时间: |
|
| 查看次数: |
4983 次 |
| 最近记录: |