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

java登录界面命令

在本系列中有关使用Java进行命令行分析的前两篇文章中,我介绍了Apache Commons CLI和args4j库。 在本系列的第三篇文章中,我介绍了jbock ,它是自我描述的“非常简单的CLI解析器”。

我在Java命令行解析中的帖子使用了一些示例,这些示例基于向Java应用程序提供必需的文件名和可选的详细标志。 本文采用了相同的方法来演示jbock 1.8 。 示例类的完整源代码在GitHub上可用 ,但是jbock( Main_Parser )生成的代码不可用,因为它可以生成。

jbock用于命令行处理的方法与之前介绍的两个解析库所使用的方法不同。 前面介绍的库需要Java代码来解析命令行参数,以针对该库的JAR构建和执行这些参数。 换句话说,库的JAR必须同时在编译时( javac )类路径和运行时Java启动器( java )类路径中。 相反,jbock方法仅在编译时依赖于jbock JAR的包含。 jbock方法生成的Java源代码完全独立于jbock库。 例如,可以选择运行jbock一次生成这些Java源代码文件,然后对这些生成的文件进行版本控制,并且从那时起仅对生成的文件进行构建和运行,而无需针对jbock的JAR进行构建或运行。 仅当需要重新生成生成的Java源代码时,才需要jbock JAR。 因为生成的代码是基于自定义Java类上的注释生成的,所以jbock代码生成在大多数情况下可能会作为常规构建的一部分而不是版本控制生成的源代码来执行。

在大多数情况下,当使用jbock解析命令行参数时,我将使用一个自定义类,其名称为“ Arguments ”或“ CommandLine ”。 但是,对于本篇文章,我使用一个简单的Main类来更类似于本系列其他文章中的其他命令行解析库所使用的方法的示例。 像args4j一样,jbock在命令行处理的“定义”阶段使用注释。 但是,jbock的注释位于类的构造函数及其参数上,而不是args4j的注释类字段的方法。 下一个代码清单中演示了基于jbock构造函数的注释方法。

命令行选项的jbock“定义”

@CommandLineArguments
public Main(@ShortName('v') @LongName("verbose") @Description("Verbosity enabled?")final boolean newVerbose,@ShortName('f') @LongName("file") @Description("File name and path")final Optional<String> newFileName)
{verbose = newVerbose;file = newFileName.orElse("");
}
// . . .

下一个代码清单中演示了使用jbock进行命令行处理的“解析”阶段。

用jbock“解析”命令行选项

final Main_Parser parser = new Main_Parser();
final Main_Parser.Binder binder = parser.parse(arguments);
final Main main = binder.bind();

上面代码清单中显示的Main_Parser类是jbock根据第一个代码清单中显示的注释生成的。 jbock库处理Main类的注释,以确定如何构建Main_Parser类。 生成的类的名称基于带有jbock批注的类的名称,并与_Parser串联。 例如,如果将带有jbock注释的构造函数的类和构造函数参数命名为“ Arguments ”,则生成的类将命名为“ Arguments_Parser ”。

在命令行参数上调用了生成的Main_Parser类的实例的parse调用该实例的bind()方法以返回原始带注释的Main类的实例。 此时的“询问”过程仅包括通过其公共“获取”方法访问该Main实例的属性。 下一个代码清单中对此进行了演示。

使用jbock进行命令行处理的“询问”阶段

out.println("The file '" + main.getFile() + "' was provided and verbosity is set to '"+ main.isVerbose() + "'.");

下面的屏幕快照演示了使用jbock解析命令行选项的代码。

如果需要帮助或用法信息,也可以从生成的*_Parser (在这种情况下为Main_Parser )类中检索该信息。 具体来说,生成的*_Parser类包括表示各个选项的嵌套Option枚举。 可以遍历那些选项的枚举值来检索有关每个选项的元数据。 在下面的代码清单中,对每个选项的枚举值(所传入的整数是要缩进的空格数describe(int)调用describe(int)方法。

使用jbock获取用法详细信息

final Main_Parser parser = new Main_Parser();
if (arguments.length < 1)
{for (final Main_Parser.Option option : Main_Parser.Option.values()){out.println(option.describe(3));}System.exit(-1);
}

接下来显示的屏幕快照演示了此代码的实际作用,以打印出选项及其说明。

这篇文章中讨论的源代码可以在GitHub上找到 。

这是在选择框架或库来帮助Java进行命令行解析时要考虑的jbock的其他一些特征。

  • jbock可作为开源软件使用 。
  • 当前版本的jbock(1.8)需要Java SE 8 。
  • jbock没有第三方或外部依赖项。
  • jbock 1.8 JAR( jbock-1.8.jar )的大小约为131 KB,但这并不像相似的库那么重要,因为在运行时不需要此JAR(生成的代码独立于JAR)。
  • 我没有演示jbock强制执行必需的命令行参数,因为它故意不支持该功能。 自述文件指出:“非常简单:没有转换器,默认值或要求检查 。 使用Java 8,可以很容易地手动添加这些东西。”

jbock与其他大多数基于Java的命令行解析库不同的最明显特征是,完全在编译时生成了解析代码,这对jbock库没有任何运行时依赖性。 在担心装入的类数或表示的类路径的大小的情况下,这将是一个明显的优势。 自述文件列出了多个“将[jbock]分开”的项目。 这些包括“无反射,纯静态分析”和“通过构造函数的便捷,灵活的属性绑定”。

翻译自: https://www.javacodegeeks.com/2017/06/java-command-line-interfaces-part-3-jbock.html

java登录界面命令

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

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

相关文章

数仓建模 项目_模型设计_数仓建模 PDF 下载

主要内容&#xff1a;数据仓库按照传统的定义&#xff0c;数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合&#xff0c;用于支持管理决策。从数据角度&#xff0c;数据仓库更适合传统的数据库&#xff0c;离线采集&#xff0c;数据一般为结构化的。当然…

Linux 命令之 htop -- 互动的进程查看器/查看进程信息

文章目录介绍与 top 的对比常用选项参考示例&#xff08;一&#xff09;启动 htop&#xff08;二&#xff09;以单色模式启动 htop&#xff08;三&#xff09;设置显示更新的延迟为 3 秒&#xff08;四&#xff09;显示指定用户的进程介绍 htop 命令是Linux系统中的一个互动的…

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

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

home oracle c.sql,Infoxmix与Oracle的嵌入式SQLC对比

Infoxmix和Oracle的嵌入式SQL/C开发对比ESQLC和PROC的对比本文档介绍了数据库嵌入式SQL/C语言程序ESQLC和PROC的区别一&#xff0e;基本语法1&#xff0e;语法字符ESQLC中既支持…$?数据库语法&#xff0c;同时也支持“EXEC SQL”&#xff0c;…:?数据库语法PROC中只支持“EX…

spock 集成测试_使用Spock Mocks进行Grails 3.3集成测试

spock 集成测试在Grails单元测试中&#xff0c;可以轻松使用Grails随附的Spock框架来模拟或存根协作者&#xff08;例如服务&#xff09;。 “ 测试”一章对模拟协作者&#xff0c; doWithSpring / doWithConfig回调方法&#xff0c;在测试中模拟bean的FreshRuntime批注进行了…

uni开发中可以用table标签么_「uni-app 组件」t-table 表格

table 表格基本使用组件&#xff0c;让你制作简单表格只需要专注内容&#xff0c;而不用过度专注样式。此组件基本全平台支持。(支付宝&#xff0c;百度&#xff0c;头条小程序理论上都支持&#xff0c;但是没有很细致的测试这几个平台)功能亮点自定义全局表格样式自定义局部表…

Linux 命令之 kill -- 杀死进程

文章目录命令介绍语法格式常用选项参考示例&#xff08;一&#xff09;列出所有信号的名称&#xff08;二&#xff09;杀掉 bash 进程命令介绍 kill 正如这个单词的意思一样&#xff0c;就是杀死。linux 系统中 kill 命令用来删除执行中的程序或工作。 kill 命令用来删除执行…

gwt-2.8.2下载_从GWT开发人员的角度概述Scala.js

gwt-2.8.2下载该博客严重偏向于GWT&#xff08;和基于GWT的框架&#xff09;&#xff0c;但是我谨记&#xff0c;将来GWT可能会被其他技术取代&#xff0c;因此我们始终愿意探索其他平台/框架。 正如他们所说&#xff0c;多元化可以降低风险。 每种编程语言&#xff0c;即使是最…

Linux 命令之 killall 命令-使用进程的名称来杀死一组进程

文章目录介绍语法格式常用选项参数参考示例介绍 killall 命令使用进程的名称来杀死进程&#xff0c;使用此指令可以杀死一组同名进程。我们可以使用kill命令杀死指定进程 PID 的进程&#xff0c;如果要找到我们需要杀死的进程&#xff0c;我们还需要在之前使用 ps 等命令再配合…

python selenium 点击开始按钮_使用Selenium和Python单击一个按钮

I have the following code:Expand allWhen I click on expand all, the whole page loads. How can I do it using WebDriver for Python?解决方案As per the HTML you can use the find_element_by_link_text and invoke click() method as follows :driver.find_element_by…

COLLATE oracle,Sql 中Collate用法

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

Linux 命令之 nslookup 命令-查询域名 DNS 信息的工具

文章目录介绍常用选项参考示例介绍 nslookup命令的英文全称为 “query Internet name server interactively ”。nslookup命令主要用来查询域名的DNS信息。在使用nslookup之前&#xff0c;先确保已经安装了它&#xff0c;nslookup属于bind-utils包下一个命令 。 nslookup有两…

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

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

extjs5的grid垂直滚动条bug_ExtJS 6.2.1 Classic Grid 滚动条bug解决方案

如果列表同时存在横向滚动条和竖向滚动条&#xff0c;当竖向滚动条滚动到底部时点击横向滚动条&#xff0c;滚动条会自动滚动到顶部此bug未在其他版本发现&#xff0c;参考高版本代码重写类解决此bug&#xff0c;直接上代码&#xff1a;/*** 如果列表同时存在横向滚动条和竖向滚…

禁止linux使用密码ssh,linux centos7服务器使用密钥登录ssh同时禁止root密码登录

这两天在大量的给服务器添加密钥&#xff0c;有的服务器简单绑定下就行了。但是京东云目前就毕竟弱了&#xff0c;得自己手动来。目前京东云的服务器需要自己手动修改配置&#xff0c;才能用密钥登录服务器&#xff0c;不然默认还是root用密码登录。把密钥保存到本地&#xff0…

cloudwatch_将CloudWatch Logs与Cloudhub Mule集成

cloudwatch在此博客中&#xff0c;我将解释如何为您的Mule CloudHub应用程序启用AWS Cloudwatch日志 。 AWS提供了Cloudwatch Logs Services&#xff0c;以便您可以更好地管理日志。 它比松散便宜。 由于cloudhub会自动翻转超过100 MB的日志&#xff0c;因此我们需要一种机制来…

linux 权限 mask,【自学Linux】Linux用户、组、权限(一)

用户、组、权限权限&#xff1a;r,w,x文件:r:可读&#xff0c;可以使用类似cat等命令查看文件内容w:可写&#xff0c;可以编辑或删除此文件x:可执行&#xff0c;eXacutable&#xff0c;可以命令提示符下当中命令提交给内核运行0 000 ---&#xff1a;无权限1 001 --x&#xff1a…

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

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

Linux 命令之 cd 命令-切换目录

文章目录介绍语法格式常用选项参考示例介绍 cd 命令是 change directory 中单词的首字母缩写&#xff0c;其英文释义是改变目录&#xff0c;所以该命令的功能是从当前目录切换到指定目录。 其中目录的路径可分为绝对路径和相对路径。若目录名称省略&#xff0c;则切换至使用者…

Linux 命令之 pgrep -- 用于检索(搜索进程/查找进程)当前正在运行的进程

文章目录命令介绍常用选项参考示例示例 1&#xff0c;查看所有名称为 httpd 的进程示例 2&#xff0c;查看进程号最小的&#xff0c;名称为 httpd 的进程示例 3&#xff0c;查看进程号最大的&#xff0c;名称为 httpd 的进程命令介绍 pgrep 的意思是"进程号全局正则匹配输…