航空订票系统界面java_Java命令行界面(第21部分):航空公司2
航空訂票系統(tǒng)界面java
本系列文章的第21篇關(guān)于Java中解析命令行參數(shù)的文章的重點(diǎn)是Airline 2庫(kù)。 Airline 2的GitHub項(xiàng)目頁面描述了該庫(kù),“ Airline是一個(gè)Java庫(kù),提供了基于注釋的框架來解析命令行界面。” 該頁面進(jìn)入狀態(tài):航空公司“同時(shí)支持簡(jiǎn)單的單個(gè)命令以及具有組的復(fù)雜git樣式的界面。” 頁面還限定航空公司2的配合關(guān)系原始航空公司庫(kù) :“這是一個(gè)基本上改寫叉原始航空公司庫(kù) ”。 這篇文章特別介紹了Airline 2.3.0 。
這篇文章中的示例與本系列之前的文章中的示例類似,這些替代類庫(kù)用于解析Java的命令行參數(shù)。 因此,這些示例中支持的選項(xiàng)將是文件路徑和名稱的規(guī)范,以及是否應(yīng)啟用冗長(zhǎng)性的規(guī)范。 此處顯示的示例的完整代碼列表可在GitHub上找到。
使用@Option批注很容易完成從Java與Airline 2解析命令行參數(shù)的“定義”階段,如下面的代碼清單所示。
航空公司2的“定義”階段
@Option(title="file", name={"-f", "--file"}, description="Path and name of file.") private String file;@Option(title="verbose", name={"-v", "--verbose"}, description="Enable or disable verbosity.") private boolean verbose;@Option注釋的這些實(shí)例的代碼是不言自明的。 @Option批注的“ name ”元素需要一個(gè)或多個(gè)String ,因此允許為同一選項(xiàng)指定多個(gè)標(biāo)志。 在這種情況下,我為選項(xiàng)使用了相同的單連字符/單字符“短”形式和雙連字符/單詞“長(zhǎng)”形式。
“解析”階段可以通過航空公司2使用SingleCommand類及其靜態(tài)singleCommand(Class <C>)方法來獲取SingleCommand實(shí)例,然后在該實(shí)例上調(diào)用parse(String [])方法來完成。 在下面的代碼清單中將演示這兩個(gè)語句。
航空公司2的“解析”階段
final SingleCommand<Main> parser = SingleCommand.singleCommand(Main.class); final Main main = parser.parse(arguments);只需通過訪問SingleCommand.parse(String[])方法提供的實(shí)例的@Option字段,即可完成航空公司2的“詢問”階段。 下一個(gè)代碼清單中對(duì)此進(jìn)行了演示。
航空公司2的“審訊”階段
if (main.file != null) {out.println("File path/name is '" + main.file + "'.");out.println("Verbosity is " + main.verbose); } else {out.println("ERROR: File path/name must be provided with -f or --file."); }接下來的兩個(gè)屏幕快照顯示了實(shí)際的示例。 當(dāng)沒有提供任何參數(shù)時(shí),第一個(gè)屏幕快照顯示輸出,第二個(gè)圖像顯示“正常”使用兩個(gè)選項(xiàng)的長(zhǎng)和短版本來指定文件路徑/名稱和詳細(xì)程度。
航空公司支持生成使用情況和幫助信息。 不幸的是,我無法運(yùn)行它,因?yàn)橛龅搅艘粋€(gè)編譯錯(cuò)誤,指出“找不到com.github.rvesse.airline.io.printers.UsagePrinter的類文件。” 我下載airline-2.3.0.jar沒有看到該類。
選擇框架或庫(kù)來幫助Java進(jìn)行命令行解析時(shí),需要考慮Airline 2的特性。
- 航空公司2是開源的,并根據(jù)Apache許可2.0版獲得許可 。
- 航空公司2是本系列中“ 較重 ”的庫(kù)之一, air-2.3.0.jar的大小約為316 KB,并且對(duì)Apache Commons Collections , Apache Commons Lang和javax.inject / javax.inject具有運(yùn)行時(shí)依賴性。 。
- 盡管航空公司已經(jīng)存在了一段時(shí)間,但航空公司2是該項(xiàng)目的最新更新。
- Airline 2基本用法的文檔非常直接且有用,但是本文中未顯示的許多功能的文檔仍在構(gòu)建中,包含許多“ TODO”語句。
對(duì)于這些帖子中我的示例中實(shí)現(xiàn)的參數(shù)處理的“單個(gè)命令”風(fēng)格, Airline 2易于使用。 我沒有看到用于表達(dá)是否需要某個(gè)選項(xiàng)的任何方法,但是簡(jiǎn)單地在繼續(xù)操作之前檢查所需選項(xiàng)的null是一種簡(jiǎn)單的方法。 鑒于其規(guī)模和依賴性,Airline 2可能最適合希望使用其本文未演示的許多強(qiáng)大功能的用戶。 對(duì)于本博文和本系列其他博文中演示的簡(jiǎn)單示例,在表示“定義”,“解析”和“審訊”階段方面,有一些輕量級(jí)的庫(kù),它們具有更少的依賴項(xiàng),它們與Airline 2的工作原理非常相似。
其他參考
- 航空公司2 (GitHub)
- 航空公司用戶指南
- 航空公司2.3.0 (Maven存儲(chǔ)庫(kù))
- Airline 2.3.0 API文檔 (Javadoc)
- 原始航空公司
翻譯自: https://www.javacodegeeks.com/2017/10/java-command-line-interfaces-part-21-airline-2.html
航空訂票系統(tǒng)界面java
總結(jié)
以上是生活随笔為你收集整理的航空订票系统界面java_Java命令行界面(第21部分):航空公司2的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果WWDC22总结:更个性化的iOS1
- 下一篇: 需求调研 现有系统梳理_对速度的需求,访