java登录界面命令_Java命令行界面(第3部分):jbock
java登錄界面命令
在本系列中有關使用Java進行命令行分析的前兩篇文章中,我介紹了Apache Commons CLI和args4j庫。 在本系列的第三篇文章中,我介紹了jbock ,它是自我描述的“非常簡單的CLI解析器”。
我在Java命令行解析中的帖子使用了一些示例,這些示例基于向Java應用程序提供必需的文件名和可選的詳細標志。 本文采用了相同的方法來演示jbock 1.8 。 示例類的完整源代碼在GitHub上可用 ,但是jbock( Main_Parser )生成的代碼不可用,因為它可以生成。
jbock用于命令行處理的方法與之前介紹的兩個解析庫所使用的方法不同。 前面介紹的庫需要Java代碼來解析命令行參數,以針對該庫的JAR構建和執行這些參數。 換句話說,庫的JAR必須同時在編譯時( javac )類路徑和運行時Java啟動器( java )類路徑中。 相反,jbock方法僅在編譯時依賴于jbock JAR的包含。 jbock方法生成的Java源代碼完全獨立于jbock庫。 例如,可以選擇運行jbock一次生成這些Java源代碼文件,然后對這些生成的文件進行版本控制,并且從那時起僅對生成的文件進行構建和運行,而無需針對jbock的JAR進行構建或運行。 僅當需要重新生成生成的Java源代碼時,才需要jbock JAR。 因為生成的代碼是基于自定義Java類上的注釋生成的,所以jbock代碼生成在大多數情況下可能會作為常規構建的一部分而不是版本控制生成的源代碼來執行。
在大多數情況下,當使用jbock解析命令行參數時,我將使用一個自定義類,其名稱為“ Arguments ”或“ CommandLine ”。 但是,對于本篇文章,我使用一個簡單的Main類來更類似于本系列其他文章中的其他命令行解析庫所使用的方法的示例。 像args4j一樣,jbock在命令行處理的“定義”階段使用注釋。 但是,jbock的注釋位于類的構造函數及其參數上,而不是args4j的注釋類字段的方法。 下一個代碼清單中演示了基于jbock構造函數的注釋方法。
命令行選項的jbock“定義”
@CommandLineArguments public Main(@ShortName('v') @LongName("verbose") @Description("Verbosity enabled?")final boolean newVerbose,@ShortName('f') @LongName("file") @Description("File name and path")final Optional<String> newFileName) {verbose = newVerbose;file = newFileName.orElse(""); } // . . .下一個代碼清單中演示了使用jbock進行命令行處理的“解析”階段。
用jbock“解析”命令行選項
final Main_Parser parser = new Main_Parser(); final Main_Parser.Binder binder = parser.parse(arguments); final Main main = binder.bind();上面代碼清單中顯示的Main_Parser類是jbock根據第一個代碼清單中顯示的注釋生成的。 jbock庫處理Main類的注釋,以確定如何構建Main_Parser類。 生成的類的名稱基于帶有jbock批注的類的名稱,并與_Parser串聯。 例如,如果將帶有jbock注釋的構造函數的類和構造函數參數命名為“ Arguments ”,則生成的類將命名為“ Arguments_Parser ”。
在命令行參數上調用了生成的Main_Parser類的實例的parse調用該實例的bind()方法以返回原始帶注釋的Main類的實例。 此時的“詢問”過程僅包括通過其公共“獲取”方法訪問該Main實例的屬性。 下一個代碼清單中對此進行了演示。
使用jbock進行命令行處理的“詢問”階段
out.println("The file '" + main.getFile() + "' was provided and verbosity is set to '"+ main.isVerbose() + "'.");下面的屏幕快照演示了使用jbock解析命令行選項的代碼。
如果需要幫助或用法信息,也可以從生成的*_Parser (在這種情況下為Main_Parser )類中檢索該信息。 具體來說,生成的*_Parser類包括表示各個選項的嵌套Option枚舉。 可以遍歷那些選項的枚舉值來檢索有關每個選項的元數據。 在下面的代碼清單中,對每個選項的枚舉值(所傳入的整數是要縮進的空格數describe(int)調用describe(int)方法。
使用jbock獲取用法詳細信息
final Main_Parser parser = new Main_Parser(); if (arguments.length < 1) {for (final Main_Parser.Option option : Main_Parser.Option.values()){out.println(option.describe(3));}System.exit(-1); }接下來顯示的屏幕快照演示了此代碼的實際作用,以打印出選項及其說明。
這篇文章中討論的源代碼可以在GitHub上找到 。
這是在選擇框架或庫來幫助Java進行命令行解析時要考慮的jbock的其他一些特征。
- jbock可作為開源軟件使用 。
- 當前版本的jbock(1.8)需要Java SE 8 。
- jbock沒有第三方或外部依賴項。
- jbock 1.8 JAR( jbock-1.8.jar )的大小約為131 KB,但這并不像相似的庫那么重要,因為在運行時不需要此JAR(生成的代碼獨立于JAR)。
- 我沒有演示jbock強制執行必需的命令行參數,因為它故意不支持該功能。 自述文件指出:“非常簡單:沒有轉換器,默認值或要求檢查 。 使用Java 8,可以很容易地手動添加這些東西。”
jbock與其他大多數基于Java的命令行解析庫不同的最明顯特征是,完全在編譯時生成了解析代碼,這對jbock庫沒有任何運行時依賴性。 在擔心裝入的類數或表示的類路徑的大小的情況下,這將是一個明顯的優勢。 自述文件列出了多個“將[jbock]分開”的項目。 這些包括“無反射,純靜態分析”和“通過構造函數的便捷,靈活的屬性綁定”。
翻譯自: https://www.javacodegeeks.com/2017/06/java-command-line-interfaces-part-3-jbock.html
java登錄界面命令
總結
以上是生活随笔為你收集整理的java登录界面命令_Java命令行界面(第3部分):jbock的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谈婚论嫁的整套流程(从恋爱到结婚的全过程
- 下一篇: java端到端_Java应用程序性能监控