jw摄像_Java命令行界面(第17部分):jw-options

jw摄像

JavaWorld的文章“ 用Java处理命令行参数”: Matthias Laux博士关闭的案例介绍了一个简单的基于Java的库,用于处理命令行参数 ,我在本文中将其称为jw-options 。 被引用的文章提供了有关为何在构造Options类时做出某些设计决策的背景信息。 本文的“结论”描述了使用附带的类和库的优点:“本文介绍了一个Java类,该类允许方便地处理Java程序的命令行选项。 该结构足够灵活,甚至可以处理复杂的情况,同时提供了API,可以用有限的编码工作来定义可接受的命令行语法。

JavaWorld文章介绍的“库”包含三个Java类: OptionsOptionDataOptionSet 。 下面的屏幕快照演示了这一点,该屏幕快照显示了options.jar的内容。

带有“ jw-options”的“定义”阶段是通过其OptionsOptionSet类实现的。 下一个代码清单中对此进行了演示(完整的代码清单可在GitHub上找到 ,此处的示例与本系列以前的文章中使用的示例相似)。

带有jw-options的“ Definition”阶段

final Options options = new Options(arguments, Multiplicity.ZERO_OR_ONE);
final OptionSet defaultOptions = options.getSet();
defaultOptions.addOption("f", false, Separator.BLANK, Multiplicity.ONCE);
defaultOptions.addOption("v", Multiplicity.ZERO_OR_ONE);

刚刚显示的代码清单演示了如何使用几个OptionSet的重载addOption方法。 为了设置文件路径和名称( -f )选项,将调用四参数版本,其中包含标志的单字母(f),标志与其参数之间的分隔符(空格)以及应当预期标志的次数(恰好发生一次)。 冗长性的第二个参数(-v)通过调用addOption的两个参数版本来addOption ,该版本指定标志的字符(v)及其预期出现的次数(零出现或单出现)。

通过调用Optionscheck方法,可以在“ jw-options”中实现“解析”阶段。 顾名思义,此方法也可用于检查参数的准确性。 下一个代码清单中对此进行了演示。

使用jw-options的“解析”阶段

if (!options.check(false, false))
{out.println("ERROR: " + options.getCheckErrors());System.exit(-1);
}

在刚刚显示的“解析”示例中,使用了Options类的方法getCheckErrors()来访问解析参数中的错误,这些错误导致Options.check方法返回false

下一个代码清单中演示了带有“ jw-options”的“询问”阶段。

jw-options的“审讯”阶段

out.println("File path/name is " + defaultOptions.getOption("f").getResultValue(0));
out.println("Verbosity is set to " + defaultOptions.isSet("v"));

“询问”示例演示了如何使用OptionSetgetOption方法访问表示“ -f”选项的选项,然后调用其getResultValue(0)方法访问与该“ -f”关联的第一个(也是在这种情况下)值”标志。 该示例中的第二行仅通过使用OptionSet的方法isSet查询是否已指定“ -v”标志(并且不担心或期望与该标志关联的值)。

接下来显示一个屏幕快照,以演示到目前为止显示的使用“ jw-options”的代码。 该图显示了未提供预期命令行参数时报告的消息,并以两个示例按预期使用命令行标志结尾。

选择框架或库来帮助Java进行命令行分析时,要考虑“ jw-options”的特征。

  • “ jw-options”“库”是开放源代码,因为它的源代码已在JavaWorld文章“ 在Java中处理命令行参数:案例关闭且源代码包含在JAR中可供下载的方式 ”中进行了全面介绍和讨论。 作为jw-0816-command.zip ZIP文件。” 但是,该“图书馆”的许可证并不明显。
  • “ jw-options”库很小: options.jar文件的大小约为13 KB。
  • 据我所知,无法用“ jw-options”用双连字符指定“长”标志名称。
  • 在“ jw-options” jar中的类上运行的javap命令显示“ main version:49 ”,这意味着它是针对J2SE 5编译的,并且可以与运行于J2SE 5的 Java上的应用程序一起使用(我注意到在Java中使用StringBuffer代码在StringBuilder也能正常工作)。

这篇文章中讨论的“ jw-options”“库”最有可能引起那些需要将命令行处理库与旧版Java一起使用或对学术有兴趣的人。 因为此“库”在相关的JavaWorld文章中进行了详细描述,并且因为它是开源的,所以可以细读代码并查看该文章,以了解它如何完成命令行解析以及为什么使用这种方法。 鉴于“ jw-options”的许可证不明显,并且鉴于这是一个相对“老”的库,似乎没有接收到更新,因此大多数Java开发人员可能更喜欢本文档中介绍的某些替代库。在许多情况下,“ jw-options”上的序列。

其他参考

  • JavaWorld文章: 在Java中处理命令行参数:案例关闭
  • 下载源代码和库Zip文件

翻译自: https://www.javacodegeeks.com/2017/10/java-command-line-interfaces-part-17-jw-options.html

jw摄像

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

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

相关文章

pixel和毫米怎么换算_压力传感器相关压力单位换算

压力传感器的应用已经很普遍了,压力传感器各个单间之间应该怎么换算呢,这个问题困扰着很多的客户,今天呢我们就来说一下它们之间的换算。在实际的工程应用中,压强单位常被当作压力单位。比较常见的压力单位包括:bar、K…

Linux 命令之 lsof -- 列出当前系统已打开的文件列表

文章目录命令介绍常用选项字段说明文件类型文件描述符文件状态模式锁模式参考示例(一)查看打开指定文件的所有进程(二)列出由某个 PID 对应的进程打开的所有文件(三)查看指定名称的进程所打开的文件列表&am…

mongodb json_在MongoDB和Spring Batch中将XML转换为JSON和原始使用

mongodb json总览 为什么将XML转换为JSON以在MongoDB中原始使用? 由于MongoDB使用JSON文档存储记录,就像表和行将记录存储在关系数据库中一样,我们自然需要将XML转换为JSON。 某些应用程序可能需要存储原始(未修改的)…

java串口发送16进制数据_MFC串口通信发送16进制数据的方法

本文实例为大家分享了MFC串口通信发送16进制数据的具体代码,供大家参考,具体内容如下MFC串口通信会使用m_mscomm控件。发送数据一般是在edit control 里输入自己想发送的内容,然后点击send button。如果直接发送字符串内容,通过下…

Linux 命令之 du -- 显示每个文件和目录的磁盘使用空间/所占用的磁盘空间大小/所使用的磁盘空间大小/查看文件和目录的大小

文章目录命令介绍常用选项参考示例(一)显示当前目录下的所有子目录和文件所占空间(二)查看指定文件所占空间的大小(三)查看指定目录的所占空间(四)查看多个文件所占空间(…

vue 侦听器侦听对象属性_Spring中的异步和事务性事件侦听器

vue 侦听器侦听对象属性内置的事件发布功能从Spring的早期版本开始存在,并且对于处理同一应用程序上下文中Spring组件之间的基本通信仍然有用。 通常,应用程序可以生成应用程序事件(可以是任意对象)并监听它们。 整个机制非常简单…

mac tomcat java_Mac下配置Java开发环境(JDK1.8)和Tomcat服务器

平时做PHP,装的有nginx,mysql这儿就不多说了,可以看前面的相关文章,用的brew配置的,超简单。 今天介绍一下Java相关的配置 Java官网下载:http://www.oracle.com/technetwork/java/javase/downloads/index.html 我这儿下载的是Java…

python集合和字典的区别_Python中的字典和集合

导语:本文章记录了本人在学习Python基础之数据结构篇的重点知识及个人心得,打算入门Python的朋友们可以来一起学习并交流。 本文重点: 1、掌握常见的字典创建,查询,判别方法; 2、了解字典中的defaultdict、…

Linux 命令之 df -- 显示磁盘空间使用情况

文章目录命令介绍常用选项大小格式参考示例(一)查看系统磁盘设备的使用情况(二)显示指定文件所在分区的磁盘使用情况(三)显示文件类型为ext4的磁盘使用情况命令介绍 df 命令的英文全称即“Disk Free”&…

apache ignite_Apache Ignite本机持久性,简要概述

apache ignite通过将数据的工作集放入系统内存中,内存中方法可以达到极高的速度。 当所有数据都保存在内存中后,就不再需要处理使用传统旋转磁盘引起的问题。 例如,这意味着无需维护数据的其他缓存副本并管理它们之间的同步。 但是这种方法还…

java编程九九乘法表_如何用JAVA语言编写一个九九乘法表

教一下学了JAVA語言的同学们撰写一个99玖玖乘决表方法进行设计构思:假如把99玖玖乘决报表中如“1*11”算式全部当作一个一字的笔画体得话,99玖玖乘决表可当作一个倾斜角二五长方形形,进行倾斜角二五长方形形可用两个for循环系统软件嵌套循环来…

python tkinter 安装_如何为Python安装tkinter?

如果你和我一样,由于你在I.S中的好朋友而在你的网络上没有根目录特权,而且你是在本地安装中工作的,你可能会在上面的方法上遇到一些问题。 我在谷歌上花了很长时间--但最终,这很容易。 要在Linux上本地安装(我将其安装到我的主目录…

Linux 命令之 more -- 显示文本文件内容/显示文件内容/查看文件内容

文章目录一、命令介绍二、常用选项三、命令内部操作快捷键四、参考示例(一)显示文件file的内容,显示之前先清屏,附已显示的百分比(二)显示文件file的内容,每10行显示一次,而且在显示…

java jigsaw_Java 9,Jigsaw,JPMS和模块:个人探索

java jigsawJava 9由于Jigsaw项目而延迟了很多次,您可能会听到很多关于模块,模块化和其他内容的信息,那么,这到底是什么呢? 什么是模块化,模块化平台是什么意思? Java平台模块系统(J…

java conf_JAVA 解析、编辑nginx.conf详解

最近工程开发遇到一个需求:用Java去解析并编辑nginx.conf解析nginx.conf过程可以参考该项目的README.md下面举个列子说明一下该如何编辑nginx.conf。定义一个pojoimportcom.alibaba.fastjson.JSONArray;importcom.google.common.base.Strings;importlombok.Data;Dat…

mysql explain 为空_车祸现场!我的MySQL千万级数据表选错索引了!

最近在线上环境遇到了一次SQL慢查询引发的数据库故障,影响线上业务。经过排查后,确定原因是:SQL在执行时,MySQL优化器选择了错误的索引(不应该说是“错误”,而是选择了实际执行耗时更长的索引)。排查过程中&#xff0c…

Linux 命令之 head -- 在屏幕上显示指定文件的开头若干行/显示文件开头内容/查看文件开头内容

文章目录命令介绍常用选项参考示例(一)显示前 3 行文件内容(二)显示文件名信息,并显示文件前两行(三)显示文件前5个字符命令介绍 head 命令用于显示文件的开头的内容。在默认情况下&#xff0c…

java登录界面命令_Java命令行界面(第25部分):JCommando

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

数据追加用什么函数_RL用算法发现算法:DeepMind 数据驱动「价值函数」自我更新,14款Atari游戏完虐人类!...

【新智元导读】击败卡斯帕罗夫的「深蓝」并不是真正的人工智能,它过度依赖了人类设计的规则,而最近DeepMind的一项深度强化学习新研究表明,不用人工介入,完全数据驱动,算法自己就能发现算法。「深蓝」并非以智取胜&…

Linux 命令之 tail -- 在屏幕上显示指定文件的末尾若干行/显示文件尾部内容/查看文件尾部内容

文章目录一、命令介绍二、常用选项三、参考示例(一)显示文件 file 的最后 10 行(二)显示文件 file 的内容,从第 20 行至文件末尾(三)显示文件file的最后10个字符(四)显示…