jw摄像_Java命令行界面(第17部分):jw-options
jw攝像
JavaWorld的文章“ 用Java處理命令行參數(shù)”: Matthias Laux博士關(guān)閉的案例介紹了一個(gè)簡(jiǎn)單的基于Java的庫(kù),用于處理命令行參數(shù) ,我在本文中將其稱為jw-options 。 被引用的文章提供了有關(guān)為何在構(gòu)造Options類時(shí)做出某些設(shè)計(jì)決策的背景信息。 本文的“結(jié)論”描述了使用附帶的類和庫(kù)的優(yōu)點(diǎn):“本文介紹了一個(gè)Java類,該類允許方便地處理Java程序的命令行選項(xiàng)。 該結(jié)構(gòu)足夠靈活,甚至可以處理復(fù)雜的情況,同時(shí)提供了API,可以用有限的編碼工作來(lái)定義可接受的命令行語(yǔ)法。
此JavaWorld文章介紹的“庫(kù)”包含三個(gè)Java類: Options , OptionData和OptionSet 。 下面的屏幕快照演示了這一點(diǎn),該屏幕快照顯示了options.jar的內(nèi)容。
帶有“ jw-options”的“定義”階段是通過(guò)其Options和OptionSet類實(shí)現(xiàn)的。 下一個(gè)代碼清單中對(duì)此進(jìn)行了演示(完整的代碼清單可在GitHub上找到 ,此處的示例與本系列以前的文章中使用的示例相似)。
帶有jw-options的“ Definition”階段
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)通過(guò)調(diào)用addOption的兩個(gè)參數(shù)版本來(lái)addOption ,該版本指定標(biāo)志的字符(v)及其預(yù)期出現(xiàn)的次數(shù)(零出現(xiàn)或單出現(xiàn))。
通過(guò)調(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()來(lái)訪問(wèn)解析參數(shù)中的錯(cuò)誤,這些錯(cuò)誤導(dǎo)致Options.check方法返回false 。
下一個(gè)代碼清單中演示了帶有“ jw-options”的“詢問(wèn)”階段。
jw-options的“審訊”階段
out.println("File path/name is " + defaultOptions.getOption("f").getResultValue(0)); out.println("Verbosity is set to " + defaultOptions.isSet("v"));“詢問(wèn)”示例演示了如何使用OptionSet的getOption方法訪問(wèn)表示“ -f”選項(xiàng)的選項(xiàng),然后調(diào)用其getResultValue(0)方法訪問(wèn)與該“ -f”關(guān)聯(lián)的第一個(gè)(也是在這種情況下)值”標(biāo)志。 該示例中的第二行僅通過(guò)使用OptionSet的方法isSet查詢是否已指定“ -v”標(biāo)志(并且不擔(dān)心或期望與該標(biāo)志關(guān)聯(lián)的值)。
接下來(lái)顯示一個(gè)屏幕快照,以演示到目前為止顯示的使用“ jw-options”的代碼。 該圖顯示了未提供預(yù)期命令行參數(shù)時(shí)報(bào)告的消息,并以兩個(gè)示例按預(yù)期使用命令行標(biāo)志結(jié)尾。
選擇框架或庫(kù)來(lái)幫助Java進(jìn)行命令行分析時(shí),要考慮“ jw-options”的特征。
- “ jw-options”“庫(kù)”是開放源代碼,因?yàn)樗脑创a已在JavaWorld文章“ 在Java中處理命令行參數(shù):案例關(guān)閉且源代碼包含在JAR中可供下載的方式 ”中進(jìn)行了全面介紹和討論。 作為jw-0816-command.zip ZIP文件。” 但是,該“圖書館”的許可證并不明顯。
- “ jw-options”庫(kù)很小: options.jar文件的大小約為13 KB。
- 據(jù)我所知,無(wú)法用“ 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”“庫(kù)”最有可能引起那些需要將命令行處理庫(kù)與舊版Java一起使用或?qū)W(xué)術(shù)有興趣的人。 因?yàn)榇恕皫?kù)”在相關(guān)的JavaWorld文章中進(jìn)行了詳細(xì)描述,并且因?yàn)樗情_源的,所以可以細(xì)讀代碼并查看該文章,以了解它如何完成命令行解析以及為什么使用這種方法。 鑒于“ jw-options”的許可證不明顯,并且鑒于這是一個(gè)相對(duì)“老”的庫(kù),似乎沒(méi)有接收到更新,因此大多數(shù)Java開發(fā)人員可能更喜歡本文檔中介紹的某些替代庫(kù)。在許多情況下,“ jw-options”上的序列。
其他參考
- JavaWorld文章: 在Java中處理命令行參數(shù):案例關(guān)閉
- 下載源代碼和庫(kù)Zip文件
翻譯自: https://www.javacodegeeks.com/2017/10/java-command-line-interfaces-part-17-jw-options.html
jw攝像
總結(jié)
以上是生活随笔為你收集整理的jw摄像_Java命令行界面(第17部分):jw-options的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: flatmap_flatMap()与co
- 下一篇: java jigsaw_Java 9,J