日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java命令行界面(第9部分):parse-cmd

發布時間:2023/12/3 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java命令行界面(第9部分):parse-cmd 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

parse-cmd庫由單個類ParseCmd.java組成,該類是“用于在Java應用程序中定義和解析命令行參數的Java類。” 該庫托管在Google Code存檔上 ,因此可以隨時關閉 。 該JAR似乎也可以在GitHub上使用 。 這篇文章介紹了如何使用parse-cmd 0.0.93處理Java中的命令行參數。

parse-cmd Requirement Wiki列出了幾種用于處理Java命令行參數的替代方法,包括本系列前面已介紹的替代方法。 在列出這些選擇之后,它指出:“查看這些和其他條目,是時候嘗試另一個解析器了。” 然后,文檔繼續描述parse-cmd試圖滿足的要求。

下一個(不完整的)代碼清單演示了使用parse-cmd解析命令行參數的“定義”階段。 [請注意,本文中的示例與本系列的前八篇文章中的示例相似。]

parse-cmd的“定義”階段

/** String displayed where there is a problem processing arguments. */ private final static String USAGE ="java examples.dustin.commandline.parsecmd.Main --file <filePathAndName> [--verbose 1]";public static void main(final String[] arguments) {final ParseCmd parseCmd= new ParseCmd.Builder().parm("--file", "").req().parm("--verbose", "0").help(USAGE).build();

代碼清單演示了使用ParseCmd.Builder()和該類實例上可用的流利方法的預期命令行參數的定義。 每個方法依次返回同一Builder類的實例,以便可以將這些方法調用鏈接在一起,如上所示。 如上所示,用法/幫助字符串是手動構建的,并通過help(String)方法提供給Builder ,而不是由parse-cmd自動構建。

ParseCmd.Builder類的parm方法已重載,但是在此代碼清單中,我使用了parm(String, String)方法parm(String, String)該方法接受參數名稱和該參數的“默認”值。 如果我僅向該方法提供一個字符串,僅接受一個字符串,則該參數的默認值假定為“ 1”。 對于文件路徑和名稱參數,這可能導致parse-cmd假定參數類型錯誤。 通過顯式提供默認的空字符串,parse-cmd可以將文件路徑和名稱的參數準確地視為可變長度字符串。

上面的代碼中也定義了--verbose參數,并且還提供了默認值,因為如果沒有提供參數,則隱式默認值“ 1”將使冗長性“ on”,并且不是默認值。使用Java進行命令行分析的系列文章中的任何早期文章。

在Builder一個鏈式返回實例上調用req()表示需要先前定義的參數( --file )。 另一個參數( --verbose )沒有指定此參數,因此隱式默認為可選。

據我所知,使用parse-cmd為定義的命令行參數指定別名或同義詞并不容易。 換句話說,我沒有辦法告訴parse-cmd --file和-f是相同的命令行參數。 因此,在此示例中,我僅對參數--file和--verbose使用帶雙連字符的“ long”版本。

在本系列中介紹了以前的基于Java的命令行解析庫之后,“解析”階段緊隨“定義”階段之后。 盡管可以使用parse-cmd進行相同的轉換,但廣告且首選的方法是在“定義”階段之后和“解析”階段之前實施“驗證”階段。 此階段使您可以查看在驗證可用命令行參數期間是否發現任何錯誤,并在下一個(不完整的)代碼清單中進行演示。

parse-cmd的“驗證”階段

final String errorString = parseCmd.validate(arguments); if (!errorString.isEmpty()) {out.println("ERROR: " + errorString); }

剛剛顯示的代碼清單演示了ParseCmd.validate(String[])方法的使用,該方法用于驗證命令行參數是否與“定義”階段中定義的預期參數匹配。 如果有任何意外結果,則返回非空字符串。 空的String被認為是一件好事,它表示“有效”命令行參數。

使用有效的參數,下一步可以“解析”這些命令行參數,如下面的單行代碼清單所示。

使用parse-cmd進行“解析”階段

final Map<String, String> parsedArguments = parseCmd.parse(arguments);

調用ParseCmd.parse(String[])是參數名稱到參數值的Java Map<String, String> 。

通過簡單地訪問解析階段返回的Map<String, String>即可實現parse-cmd的“詢問”階段。 可以通過參數名稱查詢地圖的鍵,并且返回的值是與該參數名稱關聯的值。 請注意,這意味著所有參數,甚至是像--verbose類的“布爾”參數,都具有與之關聯的值,而不是唯一需要的標志是否存在。 換句話說,-- --verbose在命令行上表示時必須后面跟一個值。 在下面的代碼清單中演示了在這種情況下對兩個預期參數的詢問。

parse-cmd的“審訊”階段

final Map<String, String> parsedArguments = parseCmd.parse(arguments); final String filePathAndName = parsedArguments.get("--file");out.println("The path/name of the file is '" + filePathAndName+ "' and verbosity is set to '" + parsedArguments.get("--verbose") + "'.");

GitHub上提供了示例的完整代碼清單,該示例的片段已在本文中顯示。

下一個屏幕快照演示了未提供必需的命令行參數( --file )時顯示的消息。

下面的屏幕快照演示了--file和--verbose命令行參數的基于parse-cmd的命令行處理的成功應用。

在選擇框架或庫來幫助Java進行命令行解析時,需要考慮parse-cmd的一些其他特征。

  • parse-cmd是帶有Apache License 2.0的開源。
  • parse-cmd托管在Google代碼檔案庫中 ,該檔案庫可隨時被“拒絕”(當前狀態為“將于2016年初被拒絕”)。
  • parsecmd-0.0.93.jar JAR文件的大小約為50 KB。
  • parse-cmd采用流暢的Builder實現,而不使用注釋。

parse-cmd是(當前)另一個Java庫,可供需要處理命令行參數的Java開發人員使用。 它使用一些假設和含義來做出一些決策。 parse-cmd的作者寫道,盡管“已有幾種基于Java的命令行解析解決方案可用”,但parse-cmd仍是編寫的,因為“它們通常都很難學習和使用。”

其他參考

  • 解析cmd
  • parse-cmd來源
  • parse-cmd下載
  • parse-cmd – Requirement.wiki
  • parse-cmd – sampleSource.wiki

翻譯自: https://www.javacodegeeks.com/2017/07/java-command-line-interfaces-part-9-parse-cmd.html

總結

以上是生活随笔為你收集整理的Java命令行界面(第9部分):parse-cmd的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。