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…

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…

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

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

apache camel_Apache Camel中的短重试与长重试

apache camel《骆驼设计模式》一书介绍了20种模式以及用于设计基于Apache Camel的集成解决方案的众多技巧和最佳实践。 每种模式都基于真实的用例&#xff0c;并提供了Camel特定的实现细节和最佳实践。 为了让您有这本书的感觉&#xff0c;以下是该书的重试模式摘录&#xff0c…

mega5安装包_[MEGA DEAL] 2017年完全Java捆绑包(95%折扣)

mega5安装包深入了解编程奥德赛&#xff08;58小时&#xff01;&#xff09;&#xff0c;进入最常用的编程语言 嘿&#xff0c;怪胎&#xff0c; 本周&#xff0c;在我们的JCG Deals商店中 &#xff0c;我们提供了一个极端的报价 。 我们提供的2017 Complete Java Bundle 仅…

matlab计算微分ppt,matlab-ch013(数值计算-微积分)20090923.ppt

matlab-ch013(数值计算-微积分)20090923.ppt 第13讲 数值计算 —微积分,张建瓴,13.1 数值积分,在工程教学和应用中&#xff0c;除了进行数据逼近外&#xff0c;还要求逼近曲线下面的面积&#xff0c;这就是积分问题。,一、数值积分方法,典型的数值积分方法有&#xff1a;用常数…

JDK 9中不推荐使用Java的Observer和Observable

在博客文章《 应用JDK 9 Deprecated增强功能》中 &#xff0c;我讨论了JDK 9中 Deprecated批注中对forRemoval&#xff08;&#xff09;和since&#xff08;&#xff09;可选元素&#xff08;方法&#xff09;的添加 。 我在那篇文章中说&#xff1a;“在Java SE API上应用新的…

WorkPlus一站式协同解决方案,助力企业降本增效

在企业数字化转型的过程中&#xff0c;很多企业都会遇到一个共同问题&#xff1a;重复建设基础功能&#xff0c;耗费大量时间和资源。为解决这一难题&#xff0c;WorkPlus已经将一些通用、基础且有技术门槛的功能进行了集成与开发&#xff0c;如IM&#xff08;即时通讯&#xf…

linux在oracle新建表,Oracle创建表及管理表

1. Oracle表的创建及管理创建表包括三个要素&#xff0c;表名&#xff0c;列名&#xff0c;数据类型。每个表都有对应不同的列&#xff0c;每个列都有唯一对应的数据类型。常用数据类型简介&#xff1a;数据类型描述CHARACTER(n)字符/字符串。固定长度 n。INTEGER(p)整数值(没有…

Linux 命令之 top -- 实时显示进程动态/查看进程信息

文章目录介绍常用选项交互命令参考示例示例 1&#xff1a;直接输入命令 top 就可以动态显示进程信息统计参数信息详解进程属性说明&#xff08;即进程列表的字段说明&#xff09;其它1.在 top 基本视图中&#xff0c;按键盘数字 1 可以监控每个逻辑 CPU 的状况2.敲击键盘 b&…

oracle同步恢复目录,Oracle创建恢复目录(catalog)

Oracle创建恢复目录(catalog)&#xff0c;在catalog数据库上创建cat用户的表空间。Oracle创建恢复目录1.在catalog数据库上创建cat用户的表空间SQL> create tablespace cat datafile /home/oracle/oradata/orcl/cat.dbf size 512M;2.创建cat用户SQL> Create user cat ide…

java登录界面命令_Java命令行界面(第3部分):jbock

java登录界面命令在本系列中有关使用Java进行命令行分析的前两篇文章中&#xff0c;我介绍了Apache Commons CLI和args4j库。 在本系列的第三篇文章中&#xff0c;我介绍了jbock &#xff0c;它是自我描述的“非常简单的CLI解析器”。 我在Java命令行解析中的帖子使用了一些示…

java中转json字符串_如何在Java中转义JSON字符串-Eclipse IDE技巧

java中转json字符串在Java应用程序中工作或进行JSON解析时&#xff0c;通常很常见的做法是从某些资源&#xff08;例如RESTful Web服务&#xff09;中复制粘贴JSON字符串&#xff0c;然后使用Jackson库解析JSON。 这是在Java中测试和学习解析JSON字符串的最快方法&#xff0c;但…

COLLATE oracle,Sql 中Collate用法

今天查询sqlite的时候需要不区分大小写&#xff0c;查了下文档&#xff0c;需要使用collate nocase.顺便学习下collate的用法。collate在sql中是用来定义排序规则的。排序规则其实就是当比较两个字符串时&#xff0c;根据某种规则来确定哪个比较大&#xff0c;是否相等。各个数…

jdeps_JDeps入门–分析项目的依赖关系

jdepsJDeps是Java依赖关系分析工具 &#xff0c;这是一个命令行工具&#xff0c;它处理Java字节码&#xff08;意味着.class文件或包含它们的JAR&#xff09;&#xff0c;并分析类之间静态声明的依赖关系。 可以用各种方式过滤结果&#xff0c;并可以将其汇总到包或JAR级别。 J…

要多大内存才满足_什么是延迟满足能力?“延迟满足”能力对孩子有多重要家长要清楚...

文丨饭饭妈记得去年过春节的时候&#xff0c;家里来了两个亲戚&#xff0c;他们分别有一个小孩&#xff0c;当时大家都在准备年夜饭。其中一份糯米团子准备好放在桌子上之后&#xff0c;亲戚家的两个小孩都非常想要吃&#xff0c;亲戚对孩子说&#xff1a;“你们现在不能吃&…

java端到端_Java应用程序性能监控:复杂分布式应用程序的端到端性能

java端到端通过从您的应用程序学习企业APM产品&#xff0c;发现更快&#xff0c;更有效的性能监控。 参加AppDynamics APM导览&#xff01; 在最复杂和分布式环境中端到端监视Java应用程序性能-专注于业务事务。 自动发现的业务交易&#xff0c;动态基准&#xff0c;代码级诊断…

java jvm虚拟机_Java虚拟机(JVM)简介

java jvm虚拟机什么是JVM Java虚拟机&#xff08;JVM&#xff09;是使计算机能够运行Java程序的抽象计算机。 JVM有三个概念&#xff1a; 1.规格 2.实施 3.实例。 该规范是正式描述JVM实现要求的文档。 具有单一规范可确保所有实现都可互操作。 JVM实现是满足JVM规范要求的…

linux系统引导分区,揭秘Linux(二)——操作系统引导与硬盘分区

通过前面的介绍想必大家对Linux有了个基础的了解&#xff0c;那么各位肯定该说是不是要装操作系统了&#xff0c;对不起让各位失望了&#xff0c;这次所讲解的是Linux运行原理与硬盘分区&#xff0c;这是重中之重啊&#xff01;请一定要细细品读。为了更好地了解Linux系统的运行…