Java命令行界面(第20部分):JSAP

JSAPJava Simple Argument Parser )2.1是本系列文章的第二十篇,重点是处理Java的命令行参数。 JSAP页面描述了该库存在的原因:“我在Internet上找到了几个解析器,所有解析器都处理了开关,但是在解析返回类型和配置文件方面,都没有我想要的多功能性。”

JSAP提供了相当多的灵活性,但付出了一些复杂性的正常代价。 幸运的是,JSAP提供了一个名为SimpleJSAP的类,它使使用JSAP完成简单任务变得更加容易。 JSAP文档以这种方式表达了这一观点: “如果您想减少处理命令行的代码量,JSAP提供了一个SimpleJSAP,可以为您完成大部分工作。” 下一个代码清单演示了在单个(尽管很冗长)语句中使用SimpleJSAP来定义预期的命令行选项。

JSAP的“定义”阶段

final SimpleJSAP jsap = new SimpleJSAP(
   "Main Application",
   "Demonstrate JSAP",
   new Parameter[]
      {new FlaggedOption("file", STRING_PARSER, NO_DEFAULT, REQUIRED, 'f', "file", "File path/name."),
       new Switch("verbose", 'v', "verbose", "Requests verbose output." )});

对于上面的代码清单,我使用静态导入来减少此“定义”代码的冗长性。 这些可以在GitHub上完整代码清单中看到。 上面的代码定义了本系列中用于解析Java命令行参数的库中所有文章中使用的两个选项:文件路径/名称和详细程度。 单个字符'f''v'是短选项名称,而长选项名称在它们各自的调用( fileverbose )之后。 请注意,命令行参数的“定义”也可以通过XML进行配置 ,尽管此处未演示。

所述“语法分析”阶段在司法制度评估方案与其中的调用另一单个语句实现解析(字符串[])上的实例方法SimpleJSAP返回的一个实例JSAPResult

JSAP的“解析”阶段

final JSAPResult parsedResult = jsap.parse(arguments);

JSAP的“询问”阶段是通过调用parse方法返回的JSAPResult实例来完成的,如下面的代码清单所示。

JSAP的“审讯”阶段

out.println("File path/name is '" + parsedResult.getString("file") + "'.");
out.println("Verbosity level is " + parsedResult.getBoolean("verbose"));

JSAP将生成自动用法帮助语句。 下一个代码清单演示了如何使用SimpleJSAP.messagePrinted()方法来确定是否发生了一些解析错误,然后使用SimpleJSAP.getHelp()消息来访问自动生成的“帮助”消息。

JSAP的“帮助”

if (jsap.messagePrinted())
{
   out.println(jsap.getHelp());
   System.exit( -1 );
}

接下来的两个屏幕快照演示了如何使用JSAP执行本文中所示的代码示例。 第一张图片描述了未提供所需的-f / --file标志时打印的用法说明。 第二幅图描绘了基于JSAP的示例代码的正常行为。

选择框架或库来帮助Java进行命令行解析时,需要考虑JSAP的特征。

JSAP似乎是较旧的基于Java的命令行解析库中较流行的一种。 像本文中演示的那样,基本功能相对容易使用,但是还可以提供更多的灵活性和可定制性,以满足更复杂的需求。

其他资源

翻译自: https://www.javacodegeeks.com/2017/10/java-command-line-interfaces-part-20-jsap.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值