航空订票系统界面java

本系列文章的第21篇关于Java中解析命令行参数的文章的重点是Airline 2库。 Airline 2的GitHub项目页面描述了该库,“ Airline是一个Java库,提供了基于注释的框架来解析命令行界面。” 该页面进入状态:航空公司“同时支持简单的单个命令以及具有组的复杂git样式的界面。” 页面还限定航空公司2的配合关系原始航空公司库 :“这是一个基本上改写叉原始航空公司库 ”。 这篇文章特别介绍了Airline 2.3.0 。

这篇文章中的示例与本系列之前的文章中的示例类似,这些替代类库用于解析Java的命令行参数。 因此,这些示例中支持的选项将是文件路径和名称的规范,以及是否应启用冗长性的规范。 此处显示的示例的完整代码列表可在GitHub上找到。

使用@Option批注很容易完成从Java与Airline 2解析命令行参数的“定义”阶段,如下面的代码清单所示。

航空公司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注释的这些实例的代码是不言自明的。 @Option批注的“ name ”元素需要一个或多个String ,因此允许为同一选项指定多个标志。 在这种情况下,我为选项使用了相同的单连字符/单字符“短”形式和双连字符/单词“长”形式。

“解析”阶段可以通过航空公司2使用SingleCommand类及其静态singleCommand(Class <C>)方法来获取SingleCommand实例,然后在该实例上调用parse(String [])方法来完成。 在下面的代码清单中将演示这两个语句。

航空公司2的“解析”阶段

final SingleCommand<Main> parser = SingleCommand.singleCommand(Main.class);
final Main main = parser.parse(arguments);

只需通过访问SingleCommand.parse(String[])方法提供的实例的@Option字段,即可完成航空公司2的“询问”阶段。 下一个代码清单中对此进行了演示。

航空公司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.");
}

接下来的两个屏幕快照显示了实际的示例。 当没有提供任何参数时,第一个屏幕快照显示输出,第二个图像显示“正常”使用两个选项的长和短版本来指定文件路径/名称和详细程度。

航空公司支持生成使用情况和帮助信息。 不幸的是,我无法运行它,因为遇到了一个编译错误,指出“找不到com.github.rvesse.airline.io.printers.UsagePrinter的类文件。” 我下载airline-2.3.0.jar没有看到该类。

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

  • 航空公司2是开源的,并根据Apache许可2.0版获得许可 。
  • 航空公司2是本系列中“ 较重 ”的库之一, air-2.3.0.jar的大小约为316 KB,并且对Apache Commons Collections , Apache Commons Lang和javax.inject / javax.inject具有运行时依赖性。 。
  • 尽管航空公司已经存在了一段时间,但航空公司2是该项目的最新更新。
  • Airline 2基本用法的文档非常直接且有用,但是本文中未显示的许多功能的文档仍在构建中,包含许多“ TODO”语句。

对于这些帖子中我的示例中实现的参数处理的“单个命令”风格, Airline 2易于使用。 我没有看到用于表达是否需要某个选项的任何方法,但是简单地在继续操作之前检查所需选项的null是一种简单的方法。 鉴于其规模和依赖性,Airline 2可能最适合希望使用其本文未演示的许多强大功能的用户。 对于本博文和本系列其他博文中演示的简单示例,在表示“定义”,“解析”和“审讯”阶段方面,有一些轻量级的库,它们具有更少的依赖项,它们与Airline 2的工作原理非常相似。

其他参考

  • 航空公司2 (GitHub)
  • 航空公司用户指南
  • 航空公司2.3.0 (Maven存储库)
  • Airline 2.3.0 API文档 (Javadoc)
  • 原始航空公司

翻译自: https://www.javacodegeeks.com/2017/10/java-command-line-interfaces-part-21-airline-2.html

航空订票系统界面java

航空订票系统界面java_Java命令行界面(第21部分):航空公司2相关推荐

  1. Python-Django毕业设计航空订票系统(程序+Lw)

    该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区版+ python3.7.7 + Mysql5.7 + HBuilderX+list pip+N ...

  2. [附源码]Python计算机毕业设计航空订票系统Django(程序+LW)

    该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区版+ python3.7.7 + Mysql5.7 + HBuilderX+list pip+N ...

  3. 东北大学20级计算机C语言课设-航空订票系统

    航空订票系统 开发人员:东北大学20级计算机系学生 开发团队:三人小组 开发语言:C语言 开发工具:vs2015 有疑问欢迎进行讨论 总代码数量大概在三千五百行左右 耗时近一个月的时间完成了该次课设, ...

  4. 基于JAVA Web的航空订票系统

    基于JAVA Web的航空订票系统 开发语言:JSP,JAVAweb 开发平台:eclipse; 数据库:MYSQL: 系统分为前台和后端: 前台界面图: 登录界面: 主界面图: 后端界面 登录: 后 ...

  5. 数据结构课程设计【航空订票系统】

    /* * Copyright (c) 2017,烟台大学计算机学院 * All right reserved. * 文件名称:main.cpp * 作者:于嵩 * 完成日期:2017年12月22日 * ...

  6. 基于ssh的航空订票系统-飞机订票系统javaweb-机票订购课程设计java代码(源码+数据库文件+文档)

    基于ssh的航空订票系统-飞机订票系统javaweb-机票订购java代码(源码+数据库文件+文档) 注意:该项目只展示部分功能,如需了解,评论区咨询即可. 作者:IT跃迁谷 1.开发环境 开发语言: ...

  7. 基于android实现航空订票系统【100010286】

    研究意义 通过在 Android 系统,进行航空订票系统的设计与实现,充分运用所学的数据库.Java 语言.数据结构.操作系统.设计模式等知识.了解一个较完整的 Android 项目的构建过程,同时, ...

  8. c语言航班订票管理系统源代码,简易C语言航空订票系统

    代码片段和文件信息 属性            大小     日期    时间   名称 ----------- ---------  ---------- -----  ---- 目录        ...

  9. cs结构航空订票系统java_VC++航空订票系统数据库设计-课程设计

    VC++航空订票系统数据库设计 目录 一  绪论 1 二 需求分析 1 三 概要设计 2 四 详细设计 4 五 调试分析 19 六 测试结果 20 七 用户使用说明 29 小结 29 参考文献 30 ...

最新文章

  1. saltstack之(十二)配置管理mount
  2. 1021. 个位数统计 (15)
  3. Django Rest框架 APIView源码调用
  4. TF卡里删掉文件后内存没变大_内存卡损坏怎么修复?数据恢复方法教程
  5. 零基础搭建Hadoop大数据处理环境
  6. 任正非:再见,荣耀!从此以后便是对手!
  7. 7个设计模式的基本原则
  8. 犀牛书学习笔记(3):函数
  9. HDU 6043 Balala Power! 思维 + 码力
  10. 【离散数学】数理逻辑 第一章 命题逻辑(2) 命题公式及其符号化、命题公式的赋值
  11. 程序员代码面试指南-左PDF
  12. 项目管理(课程总结1)Week1 澳大利亚维多利亚大学VIT1203 Introduction to Project Management
  13. 串口服务器调试助手使用教程,串口调试助手使用教程【操作方式】
  14. 在win10+VS2019上编译支持Vulkan SDK的ncnn
  15. VS2008里的代码如何格式化?
  16. MEMORY系列之“SRAM”
  17. Kafka 设计原理——副本与ISR设计
  18. js字符串转日期对象
  19. python 软件开发 哔哩哔哩_介绍Python爬取哔哩哔哩视频
  20. matlab的mod函数,mod函数(mod函数的使用方法)

热门文章

  1. test1 3-15 模拟赛1
  2. CF1612G Max Sum Array
  3. 洛谷P1852:跳跳棋(LCA,树形结构)
  4. CF1553H-XOR and Distance【dp】
  5. AT3955-[AGC023D]Go Home【结论,递归】
  6. YbtOJ#20064-[NOIP2020模拟赛B组Day4]预算缩减【树形dp】
  7. 欢乐纪中A组周六赛【2019.4.13】
  8. k-substrings(CF961F)
  9. mybatis源码阅读(三):mybatis初始化(下)mapper解析
  10. Java面试,如何在短时间内做突击