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相关推荐

  1. java登录界面命令_Java命令行界面(第18部分):JCLAP

    java登录界面命令 Giles Winstanley的JCLAP ( Java命令行参数解析器 )是基于Java的命令行处理库的系列文章中介绍的第18个库. 这篇文章的示例基于JCLAP 1.4 , ...

  2. java登录界面命令_Java命令行界面(第10部分):picocli

    java登录界面命令 picocli主页面将picocli描述为"强大的微小命令行界面"," picocli"是一个单文件Java框架,用于解析命令行参数并生成 ...

  3. java登录界面命令_Java命令行界面(第7部分):JCommander

    java登录界面命令 这是我系列的第七篇文章,简要介绍了用于处理Java命令行参数的各种库. 这篇文章回到了基于注释的库的覆盖范围,该库似乎是在Java中可用于处理命令行参数的众多可用库中知名度最高, ...

  4. java登录界面命令_Java命令行界面(第26部分):CmdOption

    java登录界面命令 由于Tweet,我了解了本系列中第26个基于Java的功能强大的库,该库用于解析命令行参数 . CmdOption在其GitHub主页上被描述为"一个通过注释配置的,用 ...

  5. java登录界面命令_Java命令行界面(第12部分):CLAJR

    java登录界面命令 第十二篇有关在Java中处理命令行参数的文章的特色库是带有Java Reflection的命令行参数 (CLAJR). 该"库"是单个Java源文件( CLA ...

  6. java登录界面命令_Java命令行界面(第11部分):CmdLn

    java登录界面命令 这篇文章介绍了如何使用Ostermiller Java Utilities 1.08.02的CmdLn(Java命令行解析器)来处理基于Java的应用程序中的命令行参数. Ost ...

  7. java登录界面命令_Java命令行界面(第13部分):JArgs

    java登录界面命令 JArgs 1.0的区别在于,这是我的第13篇文章的主题,该文章是关于Java命令行参数解析的. JArgs是一个开放源代码( BSD许可 )库,主要由Steve Purcell ...

  8. java登录界面命令_Java命令行界面(第15部分):Jargo

    java登录界面命令 Jargo在其GitHub主页上定义为"一种减轻程序参数/选项处理的工具". 当已经存在许多其他命令行处理库时,该页面为另一个命令行处理库提供了基本原理 ,该 ...

  9. java登录界面命令_Java命令行界面(第16部分):JArgp

    java登录界面命令 这篇文章中介绍的基于Java的命令行参数处理库是IBM developerWorks文章Java编程动态性,第3部分,应用的反射 (第2003 部分,此归档文章于2016年&qu ...

  10. java登录界面命令_Java命令行界面(第19部分):jClap

    java登录界面命令 本系列中第19个帖子的重点是从Java代码解析命令行参数是jClap ( Java命令行参数解析器 ),不应与JCLAP库混淆,该库是我本系列前 一篇文章的重点. 上 一篇 文章 ...

最新文章

  1. 关于IP、子网掩码、网关、和DNS相关理解
  2. 中小型网站 seo 优化推广策略
  3. asp.net用户注销或者关闭网页时清除用户Cookie
  4. JAVA中集合输出的四种方式
  5. vue修改代码同步页面_vue实现两个组件之间数据共享和修改操作
  6. java addgap,java GroupLayout格局
  7. 领导周末喊程序员修bug,程序员霸气回应:在下卖艺不是卖身!
  8. 网店营销成为运营商营销的重要平台
  9. iOS依赖注入框架系列(一):介绍Typhoon
  10. php验证qq,正则表达式验证qq号码是否输入正确
  11. 无法使用内置管理器打开计算机,win10系统无法使用内置管理员账户打开计算器的解决方法...
  12. 25G/100G-PON演进与趋势分析
  13. java方法案例:判断整数是奇数还是偶数
  14. 绪言 前端性能的重要性 HTTP概述
  15. html左侧下拉输入选项菜单栏,怎么实现html可输入下拉菜单
  16. ai怎么平均排列,AI怎么等距离排列直线? ai等比排列直线的教程
  17. error C2065: “IDD_DIALOG1”: 未声明的标识符 .
  18. 几种常用的电平转换方案
  19. Photoshop CS2 视频教程-PS背景橡皮擦工具(转)
  20. 放宽心,一切都是最好的安排

热门文章

  1. 2020年牛客多校第五场C题-easy(纯组合计数不要生成函数的做法)
  2. [CQOI]九连环(FFT优化+高精)
  3. [费用流]数字配对,新生舞会
  4. P4292-[WC2010]重建计划【长链剖分,线段树,0/1分数规划】
  5. AT4995-[AGC034E] Complete Compress【树形dp】
  6. P3538-[POI2012]OKR-A Horrible Poem【hash,字符串】
  7. 【线段树】二进制(luogu 4428)
  8. YL杯超级篮球赛(jzoj 1325)
  9. 【SPFA】重建道路(jzoj 1212)
  10. 牛客练习赛29 题解