Java命令行界面(第26部分):CmdOption

由于Tweet,我了解了本系列中第26个基于Java的功能强大的库,该库用于解析命令行参数 。 CmdOption在其GitHub主页上被描述为“一个通过注释配置的,用于Java 5+应用程序的简单注释驱动的命令行解析器工具包。” 该项目的副标题是“命令行解析从未如此简单。”

注释@CmdOption用于注释将包含已解析的命令行参数的字段(或方法)。 换句话说,通过@CmdOption批注,使用CmdOption完成“定义”阶段。 这显示在下一个代码清单中。

使用CmdOption的“定义”阶段

@CmdOption(names={"--file","-f"}, description="File Path/Name", minCount=1, args={"filePathAndName"})
private String file;@CmdOption(names={"--verbose","-v"}, description="Is verbosity enabled?", maxCount=0)
private boolean verbose;

与本系列的其他文章一样, 本文章中使用的示例是指定文件路径和名称以及详细程度的选项。 GitHub上提供了本文中示例代码清单的完整源代码清单。 如上面的代码清单所示,可以使用@CmdOption批注的names元素指定“长”(带双连字符)和“短”(带单连字符)选项名称。 minCount元素用于指定必须向其传递特定选项的参数,而args元素列出对将在帮助/使用情况显示中呈现的选项的参数的字符串引用。 verbosity选项将maxCount元素设置为0,因为不应为该选项提供任何参数( -v--verbose存在就足够了)。

所述“语法分析”阶段在CmdOption通过使实例的类的与实现@CmdOption -annotated字段(或方法)的CmdOption的的构造CmdlineParser类,然后使String[]表示命令行参数的parse(String[])实例化的CmdlineParser类的parse(String[])方法。

使用CmdOption进行“解析”阶段

final Main instance = new Main();
final CmdlineParser parser = new CmdlineParser(instance);
parser.parse(arguments);

CmdOption中的“询问”阶段仅包含在传递给CmdlineParser构造函数的包含类的实例上访问@CmdOption字段(或方法)。

CmdOption中的“审讯”阶段

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

CmdOption提供了使“帮助”或“使用”语句的生成更容易的机制。 如果@CmdOption批注包含元素isHelp=true ,则在命令行上指定与isHelp=true关联的选项时,CmdOption将不会验证命令行参数。 这样可以防止显示有关缺少必需选项或参数的错误消息,然后可以调用CmdlineParser.usage()方法以使CmdOption打印出用法/帮助信息。 接下来展示了一部分证明这一点的代码。

使用CmdOption的“帮助”

@CmdOption(names={"--help","-h"}, description = "Display this help message", isHelp=true)
private boolean help;// ...if (instance.help)
{parser.usage(out);
}

以下三个屏幕快照显示了上面的代码正在使用CmdOption。 第一张图像描绘了两条错误消息,一条未指定选项时( -f / --file是必需的),另一条在未指定参数的情况下指定“ file”选项。 第二张图描述了短和长选项名称的组合。 第三幅图像显示了指定-h--help选项时打印的用法。

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

  • CmdOption是开源的,并根据Apache许可2.0版发布。
  • de.tototec.cmdoption-0.5.0.jar的大小约为82 KB,不需要第三方依赖性。
  • CmdOption 0.5.0 使用“主要版本:49”进行编译 ,这意味着它与J2SE 5应用程序兼容。 尽管本系列中涵盖了多个库,这些库的注释与CmdOption的注释相似,但是在某些情况下,使用旧版Java的功能可能会有所不同。
  • CmdOption仍受支持; 本帖子( 0.5.0 )中介绍的版本已于本月初(2017年10月9日)更新。

CmdOption是一个易于使用的库,用于解析Java中的命令行选项。 它带有自由开放源代码许可证,并且已收到最新更新。

其他参考

  • CmdOption (GitHub)
  • Maven中央存储库上的CmdOption
  • MVNRepository上的CmdOption
  • Twitter上的@ToToTec和@TobiasRoeser

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349201.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vector c++ 赋值_面对拷贝赋值时发生的自我赋值的正确态度时接受而不是防止

C.62: Make copy assignment safe for self-assignmentC.62:保证拷贝赋值对自我赋值安全Reason(原因)If x x changes the value of x, people will be surprised and bad errors will occur (often including leaks).如果xx改变了x的值,人们会觉得很奇怪&#xff0…

华为编程规范_华为 Java 编程规范出炉,究竟和官方文档有何不同?

来源:blog.csdn.net/chenleixing/article/details/441739851、引言这个标准是衡量代码本身的缺陷,也是衡量一个研发人员本身的价值。华为作为一家全球化的 IT 公司,十几万员工,无论是人事管理,还是代码管理&#xff0c…

Java命令行界面(第19部分):jClap

本系列中第19篇文章的重点是从Java代码解析命令行参数是jClap ( Java命令行参数解析器 ),不应将它与称为JCLAP的库相混淆,而JCLAP库是我本系列先前文章的重点。 在以前的帖子覆盖JCLAP 1.4加尔斯吉尔温斯坦利( snaq.ne…

Java命令行界面(第22部分):argparser

John Lloyd的argparser是本系列的第二十二篇有关基于Java的命令行参数解析的文章中介绍的库。 该库的主页除了提供单个源代码示例外,还提供了指向基于Javadoc的API文档 ,JAR文件,ZIP文件和TAR文件的链接。 本帖子中使用的示例与本系列的前二十…

如何粗暴地下载huggingface_hub指定数据文件

参考这里: https://huggingface.co/docs/huggingface_hub/guides/download 可见下载单个文件,下载整个仓库文件都是可行的。 这是使用snapshot_download下载的一个例子: https://qq742971636.blog.csdn.net/article/details/135150482 sn…

顺序表输入栈元素c语言,C语言数据结构之栈简单操作

C语言数据结构之栈简单操作实验:编写一个程序实现顺序栈的各种基本运算,并在此基础上设计一个主程序,完成如下功能:(1)初始化顺序栈(2)插入元素(3)删除栈顶元素(4)取栈顶元素(5)遍历顺序栈(6)置空顺序栈分析:栈的顺序存储结构简称…

25q64存储多个数据_一篇文章看懂,存储虚拟化在不同用例中的实践与优势

存储虚拟化是一种对物理存储资源进行抽象的技术,使其看起来像是一个集中的资源。虚拟化掩盖了管理内存、网络、服务器和存储中资源的复杂性。存储虚拟化运行在多个存储设备上,使它们看起来就像一个单一的存储池。这些池化的存储设备可以来自不同的供应商…

android代码画出波浪球,Android绘制波浪曲线,效果很赞的。

github地址:https://github.com/sddyljsx/Android-SurfView-WaveViewpackage neal.canvas;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Path;import and…

Java命令行界面(第14部分):google-options

google-options的GitHub页面指出google-options是“来自Google(java)的人们的命令行参数解析库。” 该页面继续说:“这是Bazel Project中的命令行参数解析器。 com.google.devtools.common.options程序包已拆分为一个单独的jar,用…

android 输入法文本选择功能,Android的文本和输入---创建输入法(一)

输入法编辑器(IME)是让用户输入文本的控件。Android提供了一个可扩展的的输入法的框架,它允许应用程序给用户提供另外的输入法,如软键盘或语音输入。这些输入法一旦安装,用户就可以从系统的设置中选择他们想要使用的IME,并且这个设…

华为mate40RS能升级鸿蒙,mate40Pro和40RS能用上鸿蒙系统吗

[分享交流]mate40Pro和40RS能用上鸿蒙系统吗8886电梯直达huafen210861086新学乍练发表于 2020-12-18 12:30:08来自:HUAWEI Mate 40 Pro最新回复 2020-12-19 09:50:21如题好多人都说不能用上鸿蒙系统林泽徐独步江湖发表于 2020-12-18 12:30:52来自:HUAWEI…

android记事本添加图片功能,安卓手机上有什么便签app既可以写日记又可以添加照片?...

原标题:安卓手机上有什么便签app既可以写日记又可以添加照片?当前,有很多人一直保持着写日记的习惯,因为这样可以及时记录自己的成长轨迹,使得自己可以追寻到时光的记忆,但是我们记录日记的工具&#xff0c…

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

JSAP ( Java Simple Argument Parser )2.1是本系列文章的第二十篇,重点是处理Java的命令行参数。 JSAP页面描述了该库存在的原因:“我在Internet上找到了几个解析器,所有解析器都处理了开关,但是在解析返回…

小米平板4android软件兼容吗,小米平板4有NFC功能吗 小米平板4支持NFC吗

小米平板4有NFC吗?小米平板4终于在诸多期待之下发布了,总的来说,小米平板4是一款性价比非常高的产品。所以没有带来太多惊喜的地方,但整体表现还是不错的。可以说是目前最便宜的骁龙660智能产品,性能中端。加上小米MIU…

监视器java_Java监视器绑定的超人

监视器java这是超人生活中的黑暗时期。 乔尔艾尔(Jor-El)希望他继续航行,为他的最终命运做好准备。 然而,地球面临着世界末日,正义联盟需要他们的钢铁侠行动来拯救世界。 但是,由于我们只有一个超人&#x…

Java命令行界面(第25部分):JCommando

JCommando 网站 上将JCommando描述为“命令行参数的Java参数解析器”。 JCommando读取XML配置以生成一个Java类,该类处理Java应用程序中的解析。 在提供XML配置的 Java命令行解析库的本系列文章中,以前涵盖的唯一基于Java的库是JSAP ,但这是该…

鸿蒙系统6月可升级,华为鸿蒙2.0系统大规模升级从6月开始?

你现在使用的智能手机是什么,苹果的iPhone手机,华为智能手机,小米手机还是其他智能手机。从操作系统来看目前的智能手机基本上可以分成iPhone手机跟安卓智能手机,其中iPhone手机使用的是iOS系统,而其他智能手机操作系统…

wso2 esb_WSO2 ESB的一种消息传递方式

wso2 esb正如我之前在WSO2 ESB工作时所发布的那样。 为了更好地理解此ESB,我一直在浏览示例 (尚未完成所有示例 )。 示例12是关于与ESB的单向消息传递,并使用TCP监视器使其可见。 我之前已经介绍过如何设置类似的工具“ TcpTunnel…

android 录像机,android 录像机

一直都做camera 录像功能其实知道的很少,以前也是迷迷糊糊知道怎么写个video,今天测试了一下,各种问题。问题来源首先是对于SDK的阅读不够仔细。 实践的比较少。 其实所谓的录像 就是两个类的结合 一个是Camera 一个是MediaRecorder 这两个类…

Java命令行界面(第21部分):航空公司2

本系列文章的第21篇关于Java中解析命令行参数的文章的重点是Airline 2库。 Airline 2的GitHub项目页面描述了该库,“ Airline是一个Java库,提供了基于注释的框架来解析命令行界面。” 该页面进入状态:航空公司“既支持简单的单个命令&#xf…