java登录界面命令_Java命令行界面(第8部分):Argparse4j
java登錄界面命令
Argparse4j是“ Java命令行參數(shù)解析器庫”,其主頁將其描述為“基于Python的argparse模塊的Java命令行參數(shù)解析器庫”。 在本文中,我將簡要介紹如何使用Argparse4j 0.7.0處理命令行參數(shù),該參數(shù)類似于本系列中的前七篇文章中有關(guān)Java命令行處理的剖析。
可以通過ArgumentParser接口及其addArgument(String ...)方法完成使用Argparse4j進行命令行處理的參數(shù)“定義”階段 。 addArgument(String...)方法的返回類型是Argument接口的實例。 該接口的實現(xiàn)(通常是ArgumentImpl )提供了用于設(shè)置每個參數(shù)的特征的方法。 因為這些方法中的每一個都返回一個Argument實例,所以這些調(diào)用可以以非常流暢的方式鏈接在一起。 下一個屏幕快照對此進行了演示。
Argparse4j的“定義”階段
final ArgumentParser argumentParser =ArgumentParsers.newArgumentParser("Main", true); argumentParser.addArgument("-f", "--file").dest("file").required(true).help("Path and name of file"); argumentParser.addArgument("-v", "--verbose").dest("verbose").type(Boolean.class).nargs("?").setConst(true).help("Enable verbose output.");在上面的代碼清單中,使用靜態(tài)初始化方法實例化了ArgumentParser的實例,該實例需要一個String參數(shù)來表示使用或幫助輸出中將包含的腳本或程序名稱 。 ArgumentParsers的newArgumentParse(String,boolean)方法的第二個參數(shù)指定將自動支持“幫助”選項 -h和--help 。
上面的代碼清單中定義的第一個參數(shù)允許在命令行上指定文件路徑和名稱。 字符串“ -f”和“ -file”被傳遞到addArgument(String...)方法,這意味著-f或--file可以在命令行上使用以指定文件路徑和名稱。 在作為第一個參數(shù)的說明的一部分而創(chuàng)建的Argument實例上,調(diào)用了另外三個方法[ dest(String) , required(boolean)和help(String) ]。 這三種方法分別指定一個名稱,可以在代碼中引用該參數(shù),該參數(shù)必須出現(xiàn)在命令行中,以及在請求該參數(shù)的幫助時要顯示的字符串。
上面的代碼清單中定義的第二個參數(shù)將字符串“ -v”和“ -verbose”傳遞給addArgument(String...)方法,以允許在命令行上使用短名稱或長選項名稱表示此參數(shù)。 。 像第一個參數(shù)一樣,該名稱的名稱將由dest(String)方法設(shè)置的代碼中引用,并使用help(String)方法指定其用于“幫助”輸出的help(String) 。 第二個參數(shù)不是必需的,因此這里required(boolean)方法。
第二個參數(shù)的定義對Argument調(diào)用了一些其他方法。 我使用type(Class <T>)演示了顯式指定參數(shù)所需的Java數(shù)據(jù)類型的功能。 我還需要指定nargs(String)和setConst(Object)方法的組合,以指定verbosity參數(shù)不需要該標志提供的值。 這使我可以在期望明確說明的那些選項之后指定-v或--verbose ,而沒有“ true”或“ false”。
argparse4j通過調(diào)用ArgumentParser的parseArgs(String [])方法來支持命令行處理的“解析”階段。 下一個代碼清單演示了這一點。
使用Argparse4j“解析”命令行參數(shù)
final Namespace response = argumentParser.parseArgs(arguments);解析只需要一個語句,并返回Namespace的一個實例。
使用Argparse4j進行命令行處理的“詢問”階段涉及從Namespace實例包裝的Map中訪問已解析的命令行參數(shù)。 該映射的鍵是使用dest(String)方法指定的字符串,并且映射的值是與那些參數(shù)名稱關(guān)聯(lián)的值。 在下一個代碼清單中將演示如何查詢這些值。
用Argparse4j“詢問”命令行參數(shù)
final String filePathAndName = response.getString("file"); final Boolean verbositySet = response.getBoolean("verbose");out.println("Path/name of file is '" + filePathAndName+ "' and verbosity is "+ (Boolean.TRUE.equals(verbositySet) ? "SET" : "NOT SET")+ ".");在剛剛列出的代碼中,使用了“文件”和“詳細”鍵,因為在定義預(yù)期參數(shù)時, dest(String)方法提供了相同的字符串。
可以在GitHub上查看提取上述代碼段的完整源代碼。
下一個屏幕快照演示了不帶任何參數(shù)的簡單Java應(yīng)用程序的運行以及顯示的有關(guān)缺少的必需“文件”參數(shù)的消息。
上面的屏幕快照中顯示的所有大寫“ FILE”來自在定義預(yù)期參數(shù)時在dest(String)方法中指定的dest(String) 。 換句話說,該dest(String)規(guī)范既設(shè)置了用于在內(nèi)部鍵入?yún)?shù)映射的字符串,又設(shè)置了在幫助/用法中顯示的目標字符串。
下一個屏幕快照展示了“文件”和“詳細”選項的典型用法的幾種變體。
最終的屏幕快照演示了為-h或--help選項提供的幫助信息,因為ArgumentParser的原始實例是使用“ addHelp”參數(shù)設(shè)置為true 。
在選擇框架或庫來幫助Java進行命令行解析時,需要考慮Argparse4j的一些其他特征。
- Argparse4j是開源的,并獲得MIT許可證的許可 。
- argparse4j-0.7.0.jar (2015年12月)的大小約為89 KB,沒有其他第三方庫依賴項。
- Argparse4j不使用注釋。
- 聯(lián)機文檔包含Clojure示例 。
- 我懷疑使用Python(特別是如果使用argparse )編寫腳本的Java開發(fā)人員在需要解析命令行參數(shù)的Java應(yīng)用程序中使用argparse4j時會獲得好處。
- (我發(fā)現(xiàn)在Java中處理命令行參數(shù)時, Apache Commons CLI很直觀,因為與Java中相比,我在Groovy中解析命令行參數(shù)的頻率更高,而且Groovy提供了內(nèi)置的Apache Commons CLI支持)
- Argparse4j啟發(fā)了 Scala的argparse4s 的開發(fā) 。
Argparse4j只是許多基于Java的命令行處理庫之一。 argparse4j的獨特之處在于它的argparse傳統(tǒng),這使其與眾多其他選擇大相徑庭。 鑒于此,我相信最可能選擇Argparse4j來滿足其Java命令行處理需求的Java開發(fā)人員將是那些經(jīng)常使用argparse解析基于Python的腳本和工具中的命令行參數(shù)的開發(fā)人員,或者更喜歡Python和argparse的命令解析語義的那些開發(fā)人員。 。
其他參考
- Argparse4j
- Argparse4j用戶手冊
- Argparse4j示例
- Argparse4j API文檔 (Javadoc)
- Argparse4j源于GitHub
- Argparse4j版本 (下載)
- Argparse4j 0.7.0 (Maven)
翻譯自: https://www.javacodegeeks.com/2017/07/java-command-line-interfaces-part-8-argparse4j.html
java登錄界面命令
總結(jié)
以上是生活随笔為你收集整理的java登录界面命令_Java命令行界面(第8部分):Argparse4j的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux设备文件保存位置是(linux
- 下一篇: java登录界面命令_Java命令行界面