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

java登录界面命令

细算在Java命令行处理与Apache的百科全书CLI , args4j , jbock和命令行中先前的文章,我把注意力转向在这个岗位使用JewelCli完成的命令行参数相似的处理Java中。

几个Java命令行处理库使用批注来定义命令行选项。 到目前为止,本系列文章中涵盖的四个库中的三个都使用注释,JewelCli也是如此。 JewelCli在到目前为止我所介绍的库中是独一无二的,因为它的注释应用在Java接口上,而不是在Java类或类的构造上。 下一个代码清单演示了如何在Java接口上使用注释来实现JewelCli命令行解析的“定义”阶段。

JewelCli“定义”通过带注释的接口实现

package examples.dustin.commandline.jewelcli;import com.lexicalscope.jewel.cli.Option;/*** Interface defining JewelCli-friendly command-line parameters.*/
public interface MainCommandLine
{@Option(shortName="f", description="Name and path of file to be used.")String getFile();@Option(shortName="v", description="Indicate whether status should be reported verbosely.")boolean isVerbose();@Option(helpRequest=true, description="Usage details on command-line arguments.")boolean getHelp();
}

上面显示的简单界面包含许多与命令行处理有关的内容。 这些选项具有使用shortName注释类型元素显式指定的单连字符简称,并通过“ get”方法的名称隐式指定(尽管longName注释类型元素可用于显式指定的长名称[double hyphens]版本)开关)。 命令行选项还具有通过Option注释提供的各自描述。 helpRequest=true的使用描述了应使用哪种命令行开关来显示用法/帮助信息。 在这种情况下,因为注释方法名为getHelp() ,所以--help开关将显示用法信息。 如果我将方法命名为getDustin()并使用@Option(helpRequest=true)对其进行注释,则该开关将是--dustin以显示用法。

在除了与方法名称匹配的开关的长名称之外的情况下,JewelCli利用约定优于配置。 如上所示,在注释了命令行选项的相应接口方法定义后,详细程度开关(返回boolean )是可选的。 需要文件名切换,因为其对应的getFile()方法返回String 。 如果我想使文件名可选,则可以在getFile()方法的@Option注释中提供一个defaultValue ,例如@Option(defaultValue="")

通过使用JewelCli @Option注释进行注释的接口(在本例中为MainCommandLine ),我们可以使用JewelCli @Option “解析”阶段。 在Main的下一个代码清单中,这与“询问”阶段一起得到了证明。

JewelCli的“解析”和“审讯”阶段

package examples.dustin.commandline.jewelcli;import static java.lang.System.out;import com.lexicalscope.jewel.cli.CliFactory;/*** Demonstrates use of JewelCli for parsing command-line* parameters in Java.*/
public class Main
{public static void main(final String[] arguments){final MainCommandLine main = CliFactory.parseArguments(MainCommandLine.class, arguments);out.println("You specified file '" + main.getFile() + "' with verbosity setting of '" + main.isVerbose() + "'.");}
}

刚刚显示的Main类的其中一行“解析” [对CliFactory.parseArguments(Class<T>, String...)的调用],而另一行“询问” [访问对JewelCli-带注释的界面,如先前所示]。

以下三个屏幕快照演示了实际中基于JewelCli的代码示例。 第一个图像演示了使用--help查看用法(注意,输出中包含堆栈跟踪)。 第二张图片显示了长( - )和短( -- )选项开关的不同组合。 第三个图像显示了当未提供必需的命令行参数(在这种情况下为--file-f )时显示的输出消息和关联的堆栈跟踪。

GitHub上提供了本文中用于演示JewelCli应用的这两个类的代码清单。

选择库以帮助进行Java中的命令行解析时,JewelCli的一些其他特征也应考虑在内。

  • JewelCli是开源的,并根据Apache软件许可版本2获得许可 。
  • 当前的JewelCli ( 0.8.9 )JAR( jewelcli-0.8.9.jar / 2014年2月)大小约为542 KB。
  • 无需其他库即可使用JewelCli。
  • 如上面的示例所示,JewelCli在Java接口上使用“定义”阶段的注释。 任何以类似方式注释类“ get”方法的尝试都会在运行时产生诸如“ IllegalArgumentException:…不是接口”之类的消息。
    • 但是,JewelCli确实支持一种替代的基于类/实例的方法 ,在该方法中,对类上的“设置”方法进行了注释,而不是对接口上的“获取”方法进行了注释。
  • JewelCli允许接口从超级接口继承,并且在继承接口中将支持父接口中定义的@Option
  • 界面中注释的方法的返回数据类型提供了命令行选项值的类型强制。 枚举甚至可以用作返回数据类型,以将可能的命令行选项类型缩小到一组有限的可能性。

JewelCli易于使用,并且由于其在配置方法上的约定,因此只需很少的代码即可定义,解析和询问命令行参数。 我发现为定义可解析的命令行选项的接口添加注释的推荐方法在美学上也很令人满意。

其他资源

  • JewelCli
  • GitHub上的JewelCli
  • Maven上的JewelCli
  • JewelCli使用介绍
  • JewelCli文档/博客
  • JewelCLI:Java的简单CLI界面
  • JewelCli:替代方案,评论,博客文章和用户

翻译自: https://www.javacodegeeks.com/2017/07/java-command-line-interfaces-part-5-jewelcli.html

java登录界面命令

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

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

相关文章

matlab 三维图像配准,[转载]Matlab实现多种图像配准(转)

本文讲述如何利用Matlab Image Processing Toolbox中的图像配准工具实现线性正投影、仿射、投影、多项式、分段线性、局部加权平均配准的过程。实验平台X86 PC&#xff0c;Windows XP sp2, Matlab 7.1资源的获取matlab工具的使用方法&#xff1a;查看帮助mage Processing Toolb…

Linux 命令之 pstree -- 以树状图显示进程/查看进程信息

文章目录介绍常用选项命令示例介绍 Linux 系统中 pstree 命令的英文全称是“process tree”&#xff0c;即将所有进程以树状图显示&#xff0c;树状图将会以 pid (如果有指定) 或是以 init 这个基本进程为根 (root)&#xff0c;如果有指定使用者 id&#xff0c;则树状图会只显…

totolinkn200up怎么设置_totolinkN200R无线路由器如何设置啊,求高人指点

展开全部totolinkN200R无线路e68a84e8a2ad3231313335323631343130323136353331333337393532由器设置方法&#xff1a;【设置无线路由器方法】【家庭网络环境布线】&#xff1a;1、有猫(modem)&#xff1a;猫(modem)----路由器wan口&#xff1b;路由器lan口----电脑。2、没有猫(…

jersey 入门示例_Jersey Web Service Hello World Java示例

jersey 入门示例在Restlet之后&#xff0c; Jersey是另一个流行的开源框架&#xff0c;可以用Java创建RESTful Web服务 。 Jersey符合JAX-RS规范&#xff0c;实际上它是JAX-RS&#xff08;JSR 311&#xff09;&#xff08;http://jsr311.java.net/nonav/releases/1.1/index.htm…

php domdocument getelementbyid,PHP DOMDocument- getElementByID添加Â代替空

PHP DOMDocument-> getElementByID添加代替空(PHP DOMDocument->getElementByID adding in place of empty )我正在使用PHP的DOMDocument对象来解析一些HTML(使用cURL获取)。 当我按ID获取元素并输出它时&#xff0c;任何空的 标记都会获得一个额外的字符并变为 。代码…

Linux 命令之 whois 命令-用于查找并显示用户信息

文章目录介绍参考示例介绍 whois指令会去查找并显示指定帐号的用户相关信息&#xff0c;因为它是到Network Solutions的WHOIS数据库去查找&#xff0c;所以该帐号名称必须在上面注册方能寻获&#xff0c;且名称没有大小写的差别。 参考示例 [rootlocalhost www]# whois root…

gptuefi优势_UEFI+GPT的区别,有啥不同?写的很详细易懂

搜索相关知识时看到的好文章&#xff0c;由于百度空间挂了&#xff0c;在此注明出处作者QQ:407647406以表谢意&#xff0c;原地址戳我其实楼主早就知道UEFI&#xff0c;曾经也一直关注并试图了解&#xff0c;无奈限于当时国内有关资料匮乏&#xff0c;实在找不到什么使用有效能…

oauth2和jwt_OAuth2,JWT,Open-ID Connect和其他令人困惑的事物

oauth2和jwt免责声明 如果觉得我必须从一个重要的免责声明开始这篇文章&#xff1a; 不要太相信我要说的话。 我之所以这样说&#xff0c;是因为我们正在讨论安全性。 而且&#xff0c; 当您谈论安全性时&#xff0c;除了100&#xff05;正确的陈述外&#xff0c;还有冒任何其他…

matlab的exec程序,C++调用Matlab画图的一段程序

劳动节闲来无事&#xff0c;写了一天程序&#xff0c;just for fun.看&#xff0c;这是C调用Matlab画图的一段程序。暂时不想多解释了&#xff0c;有兴趣的话&#xff0c;看看下面的代码吧。以下几段代码由上到下&#xff0c;越来越旧。最上面的是最新更新的版本。#include#inc…

Linux 命令之 iwconfig 命令-配置无线网络接口

文章目录介绍常用选项参考文档介绍 使用iwconfig命令可以为无线接口显示或设置网络接口的参数&#xff0c;它可以用来配置无线网络接口&#xff0c;是非常好用的。 常用选项 选项说明essid设置无线网卡的ESSID(Extension Service Set ID)。通过ESSID来区分不同的无线网络&am…

java gc cms_Java垃圾收集器:G1GC何时将CMS强制退出?

java gc cms在针对JDK 9&#xff08;2017/4/4&#xff09;提出的JEP中 &#xff0c; Mark Reinhold写道JEP 291 &#xff08;“弃用并发标记扫描&#xff08;CMS&#xff09;垃圾收集器”&#xff09;是“已被放置在在讨论和审查后&#xff0c;由所有者将其定位为目标”。 如果…

ios 高德地图加载瓦片地图_IOS 高德地图 API 加载 WMS 服务

IOS 高德地图 API 加载 WMS 服务本文主要介绍通过自定义高德地图 MATileOverlay 接口&#xff0c;添加 WMS 服务到地图上。废话少说&#xff0c;先贴代码。代码自定义类 WMSTileOverlayUtil&#xff0c;继承自高德地图接口 MATileOverlay&#xff0c;主要重载函数&#xff1a;-…

Linux 命令之 iwlist 命令-从无线网卡获取更详细的无线信息

文章目录介绍常用选项命令示例介绍 iwlist 命令用于对 /proc/net/wireless 文件进行分析&#xff0c;得出无线网卡相关信息。 常用选项 选项说明scanning搜索当前无线网络frequen显示频道信息rate显示连接速度power显示电源模式txpower显示功耗retry显示重试连接次数(网络不…

drools dmn_DMN 1.1 XML:从建模到使用Drools 7.0的自动化

drools dmn我是一名自由顾问&#xff0c;但今天我是一名博士生。 本文的全球背景是企业架构&#xff08;EA&#xff09;&#xff0c;它需要对企业进行建模。 由于EA的一个方面是业务流程建模&#xff0c;所以我使用BPMN已有数年之久&#xff0c;但是这种表示法并不十分适合表示…

矩阵期望 matlab,matlab中矩阵元素求和、求期望和均方差

在matlab中求一个矩阵中元素的和可以自己编写for循环来完成&#xff0c;这样比较方便&#xff0c;想求那些数据的和都可以做到&#xff0c;然而效率比较低&#xff0c;如果数据量大程序会跑好长时间。所以我们可以转而用matlab提供的sum函数。设M为一个矩阵&#xff0c;那么&am…

python默认字体大小_python – 如何设置PIL加载的默认字体的大小,使其适合我的8×8矩阵?...

我正在努力在88矩阵显示器上显示文本,而且我没有在我的BeagleBone上知道的.ttf文件.根据示例here,我应该能够说font ImageFont.load_default()而不是加载.ttf,但是,这显然不是指定字体的尺寸&#xff01;有什么办法吗&#xff1f;或者,是否有一个地方你知道我可以在我的BBB版本…

Linux 命令之 tcpdump -- 监听网络流量

文章目录命令介绍参考文档命令介绍 tcpdump 命令是一款 sniffer 工具&#xff0c;是 Linux 上的抓包工具&#xff0c;嗅探器&#xff1b;它可以打印出所有经过网络接口的数据包的头信息。 tcpdump 命令工作时先要把网卡的工作模式切换到混杂模式。所以 tcpdump 命令需要以 ro…

java args_Java命令行界面(第2部分):args4j

java args在上一篇文章中 &#xff0c;我研究了使用Apache Commons CLI在Java应用程序中解析命令行参数。 在本文中&#xff0c;我将使用另一个库args4j进行相同的操作。 args4j采用了一种不同于Commons CLI的方式来指定Java应用程序应期望的命令行参数。 尽管Commons CLI期望…

php点击后增加html元素,如何动态生成html元素以及为元素追加属性的方法介绍(附代码)...

本篇文章给大家分享的是关于如何动态生成html元素以及为元素追加属性的方法介绍(附代码)&#xff0c;内容很不错&#xff0c;有需要的朋友可以参考一下&#xff0c;希望可以帮助到大家。动态生成HTML元素的方法有三种&#xff1a;第一种&#xff1a;document.createElement()创…

excel npoi 连接_Net操作Excel_NPOI(示例代码)

Npoi 简介1.整个Excel表格叫做工作表&#xff1a;WorkBook(工作薄)&#xff0c;包含的叫页(工作表)&#xff1a;Sheet&#xff1b;行&#xff1a;Row&#xff1b;单元格Cell。4.忘了告诉大家npoi是做什么的了&#xff0c;npoi 能够读写几乎所有的Office 97-2003文件格式&#x…