Java命令行界面(第17部分):jw-options
JavaWorld文章處理Java中的命令行參數: Matthias Laux博士關閉的案例介紹了一個基于Java的簡單庫,用于處理命令行參數 ,在本文中我將其稱為jw-options 。 被引用的文章提供了有關為何在構造Options類時做出某些設計決策的背景信息。 本文的“結論”描述了使用附帶的類和庫的優點:“本文描述了一個Java類,該類允許方便地處理Java程序的命令行選項。 該結構足夠靈活,甚至可以處理復雜的情況,同時提供了API,可以用有限的編碼工作來定義可接受的命令行語法。
此JavaWorld文章介紹的“庫”包含三個Java類: Options , OptionData和OptionSet 。 下面的屏幕快照演示了這一點,該屏幕快照顯示了options.jar的內容。
帶有“ jw-options”的“定義”階段是通過其Options和OptionSet類實現的。 下一個代碼清單中對此進行了演示(完整的代碼清單可在GitHub上找到,并且此處的示例類似于本系列先前文章中使用的示例)。
帶有jw-options的“定義”階段
final Options options = new Options(arguments, Multiplicity.ZERO_OR_ONE); final OptionSet defaultOptions = options.getSet(); defaultOptions.addOption("f", false, Separator.BLANK, Multiplicity.ONCE); defaultOptions.addOption("v", Multiplicity.ZERO_OR_ONE);剛剛顯示的代碼清單演示了如何使用幾個OptionSet的重載addOption方法。 為了設置文件路徑和名稱( -f )選項,將調用四參數版本,其中包含標志的單字母(f),標志與其參數之間的分隔符(空格)以及應當預期標志的次數(恰好發生一次)。 冗長性的第二個參數(-v)通過調用addOption的兩個參數版本來addOption ,該版本指定標志的字符(v)及其預期出現的次數(零出現或單出現)。
通過調用Options的check方法,可以在“ jw-options”中實現“解析”階段。 顧名思義,此方法也可用于檢查參數的準確性。 下一個代碼清單對此進行了演示。
使用jw-options的“解析”階段
if (!options.check(false, false)) {out.println("ERROR: " + options.getCheckErrors());System.exit(-1); }在剛剛顯示的“解析”示例中,使用了Options類的方法getCheckErrors()來訪問解析后的參數中的錯誤,這些錯誤導致Options.check方法返回false 。
下一個代碼清單中演示了帶有“ jw-options”的“詢問”階段。
jw-options的“審訊”階段
out.println("File path/name is " + defaultOptions.getOption("f").getResultValue(0)); out.println("Verbosity is set to " + defaultOptions.isSet("v"));“詢問”示例演示了如何使用OptionSet的getOption方法訪問表示“ -f”選項的選項,然后調用其getResultValue(0)方法訪問與該“ -f”關聯的第一個(也是在這種情況下)值”標志。 該示例的第二行僅通過使用OptionSet的方法isSet查詢是否已指定“ -v”標志(并且不必擔心或期望與該標志關聯的值)。
接下來顯示一個屏幕快照,以演示到目前為止顯示的使用“ jw-options”的代碼。 該圖顯示了未提供預期的命令行參數時報告的消息,并以兩個示例按預期使用命令行標志結尾。
選擇框架或庫來幫助Java進行命令行解析時,要考慮“ jw-options”的特征。
- “ jw-options”“庫”是開放源代碼,因為它的源代碼已在JavaWorld文章“ 在Java中處理命令行參數:關閉案例且源代碼包含在JAR中可供下載 ”中進行了全面介紹和討論。 作為jw-0816-command.zip ZIP文件。” 但是,該“圖書館”的許可證并不明顯。
- “ jw-options”庫很小: options.jar文件的大小約為13 KB。
- 據我所知,沒有辦法用“ jw-options”用雙連字符指定“長”標志名。
- 在“ jw-options” jar中的類上運行的javap命令顯示“ main version:49 ”,這意味著它是針對J2SE 5編譯的,并且可以與運行于J2SE 5的 Java上的應用程序一起使用(我注意到在Java中使用StringBuffer代碼在StringBuilder也可以正常工作)。
這篇文章中討論的“ jw-options”“庫”最有可能引起那些需要將命令行處理庫與舊版Java結合使用或對學術有興趣的人。 因為此“庫”在相關的JavaWorld文章中進行了詳細描述,并且因為它是開源的,所以人們可以仔細閱讀代碼并查看該文章,以了解其如何完成命令行解析以及為什么使用這種方法。 鑒于“ jw-options”的許可證不明顯,并且鑒于這是一個相對“老”的庫,似乎沒有收到更新,因此大多數Java開發人員可能更喜歡本文檔中介紹的某些替代庫。在許多情況下,“ jw-options”上的序列。
其他參考
- JavaWorld文章: 在Java中處理命令行參數:案例關閉
- 下載源代碼和庫Zip文件
翻譯自: https://www.javacodegeeks.com/2017/10/java-command-line-interfaces-part-17-jw-options.html
總結
以上是生活随笔為你收集整理的Java命令行界面(第17部分):jw-options的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安吉电脑桌面壁纸(电脑桌面圣诞壁纸)
- 下一篇: Java命令行界面(第6部分):JOpt