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