Java Apache CLI OptionBuilder不能用作Builder模式
我想做一些類似的事情
public static final Option job1 = OptionBuilder.hasArg(false) .isRequired(false) .withDescription("description of job1") .create(JOB1);
如ofollow,noindex" target="_blank">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
但是我無法編譯抱怨
靜態成員org.apache.commons.cli.OptionsBuilder.create()通過例項引用訪問
我甚至嘗試使用<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
更新:我的修補程式已經提交到中繼線,所以在下一個版本的commons-cli(v1.3)中將有一個新的“正確”構建器可用.見Javadocshere .
程式碼日誌版權宣告:
翻譯自:http://stackoverflow.com/questions/12466955/java-apache-cli-optionbuilder-not-working-as-builder-pattern