java登录界面命令

Argparse4j是“ Java命令行参数解析器库”,其主页将其描述为“基于Python的argparse模块的Java命令行参数解析器库”。 在本文中,我将简要介绍如何使用Argparse4j 0.7.0处理命令行参数,该参数类似于本系列中的前七篇文章中有关Java命令行处理的剖析。

可以通过ArgumentParser接口及其addArgument(String ...)方法完成使用Argparse4j进行命令行处理的参数“定义”阶段 。 addArgument(String...)方法的返回类型是Argument接口的实例。 该接口的实现(通常是ArgumentImpl )提供了用于设置每个参数的特征的方法。 因为这些方法中的每一个都返回一个Argument实例,所以这些调用可以以非常流畅的方式链接在一起。 下一个屏幕快照对此进行了演示。

Argparse4j的“定义”阶段

final ArgumentParser argumentParser =ArgumentParsers.newArgumentParser("Main", true);
argumentParser.addArgument("-f", "--file").dest("file").required(true).help("Path and name of file");
argumentParser.addArgument("-v", "--verbose").dest("verbose").type(Boolean.class).nargs("?").setConst(true).help("Enable verbose output.");

在上面的代码清单中,使用静态初始化方法实例化了ArgumentParser的实例,该实例需要一个String参数来表示使用或帮助输出中将包含的脚本或程序名称 。 ArgumentParsers的newArgumentParse(String,boolean)方法的第二个参数指定将自动支持“帮助”选项 -h--help

上面的代码清单中定义的第一个参数允许在命令行上指定文件路径和名称。 字符串“ -f”和“ -file”被传递到addArgument(String...)方法,这意味着-f--file可以在命令行上使用以指定文件路径和名称。 在作为第一个参数的说明的一部分而创建的Argument实例上,调用了另外三个方法[ dest(String) , required(boolean)和help(String) ]。 这三种方法分别指定一个名称,可以在代码中引用该参数,该参数必须出现在命令行中,以及在请求该参数的帮助时要显示的字符串。

上面的代码清单中定义的第二个参数将字符串“ -v”和“ -verbose”传递给addArgument(String...)方法,以允许在命令行上使用短名称或长选项名称表示此参数。 。 像第一个参数一样,该名称的名称将由dest(String)方法设置的代码中引用,并使用help(String)方法指定其用于“帮助”输出的help(String) 。 第二个参数不是必需的,因此这里required(boolean)方法。

第二个参数的定义对Argument调用了一些其他方法。 我使用type(Class <T>)演示了显式指定参数所需的Java数据类型的功能。 我还需要指定nargs(String)和setConst(Object)方法的组合,以指定verbosity参数不需要该标志提供的值。 这使我可以在期望明确说明的那些选项之后指定-v--verbose ,而没有“ true”或“ false”。

argparse4j通过调用ArgumentParser的parseArgs(String [])方法来支持命令行处理的“解析”阶段。 下一个代码清单演示了这一点。

使用Argparse4j“解析”命令行参数

final Namespace response = argumentParser.parseArgs(arguments);

解析只需要一个语句,并返回Namespace的一个实例。

使用Argparse4j进行命令行处理的“询问”阶段涉及从Namespace实例包装的Map中访问已解析的命令行参数。 该映射的键是使用dest(String)方法指定的字符串,并且映射的值是与那些参数名称关联的值。 在下一个代码清单中将演示如何查询这些值。

用Argparse4j“询问”命令行参数

final String filePathAndName = response.getString("file");
final Boolean verbositySet = response.getBoolean("verbose");out.println("Path/name of file is '" + filePathAndName+ "' and verbosity is "+ (Boolean.TRUE.equals(verbositySet) ? "SET" : "NOT SET")+ ".");

在刚刚列出的代码中,使用了“文件”和“详细”键,因为在定义预期参数时, dest(String)方法提供了相同的字符串。

可以在GitHub上查看提取上述代码段的完整源代码。

下一个屏幕快照演示了不带任何参数的简单Java应用程序的运行以及显示的有关缺少的必需“文件”参数的消息。

上面的屏幕快照中显示的所有大写“ FILE”来自在定义预期参数时在dest(String)方法中指定的dest(String) 。 换句话说,该dest(String)规范既设置了用于在内部键入参数映射的字符串,又设置了在帮助/用法中显示的目标字符串。

下一个屏幕快照展示了“文件”和“详细”选项的典型用法的几种变体。

最终的屏幕快照演示了为-h--help选项提供的帮助信息,因为ArgumentParser的原始实例是使用“ addHelp”参数设置为true

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

  • Argparse4j是开源的,并获得MIT许可证的许可 。
  • argparse4j-0.7.0.jar (2015年12月)的大小约为89 KB,没有其他第三方库依赖项。
  • Argparse4j不使用注释。
  • 联机文档包含Clojure示例 。
  • 我怀疑使用Python(特别是如果使用argparse )编写脚本的Java开发人员在需要解析命令行参数的Java应用程序中使用argparse4j时会获得好处。
    • (我发现在Java中处理命令行参数时, Apache Commons CLI很直观,因为与Java中相比,我在Groovy中解析命令行参数的频率更高,而且Groovy提供了内置的Apache Commons CLI支持)
  • Argparse4j启发了 Scala的argparse4s 的开发 。

Argparse4j只是许多基于Java的命令行处理库之一。 argparse4j的独特之处在于它的argparse传统,这使其与众多其他选择大相径庭。 鉴于此,我相信最可能选择Argparse4j来满足其Java命令行处理需求的Java开发人员将是那些经常使用argparse解析基于Python的脚本和工具中的命令行参数的开发人员,或者更喜欢Python和argparse的命令解析语义的那些开发人员。 。

其他参考

  • Argparse4j
  • Argparse4j用户手册
  • Argparse4j示例
  • Argparse4j API文档 (Javadoc)
  • Argparse4j源于GitHub
  • Argparse4j版本 (下载)
  • Argparse4j 0.7.0 (Maven)

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

java登录界面命令

java登录界面命令_Java命令行界面(第8部分):Argparse4j相关推荐

  1. java登录界面命令_Java命令行界面(第18部分):JCLAP

    java登录界面命令 Giles Winstanley的JCLAP ( Java命令行参数解析器 )是基于Java的命令行处理库的系列文章中介绍的第18个库. 这篇文章的示例基于JCLAP 1.4 , ...

  2. java登录界面命令_Java命令行界面(第10部分):picocli

    java登录界面命令 picocli主页面将picocli描述为"强大的微小命令行界面"," picocli"是一个单文件Java框架,用于解析命令行参数并生成 ...

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

    java登录界面命令 这是我系列的第七篇文章,简要介绍了用于处理Java命令行参数的各种库. 这篇文章回到了基于注释的库的覆盖范围,该库似乎是在Java中可用于处理命令行参数的众多可用库中知名度最高, ...

  4. java登录界面命令_Java命令行界面(第26部分):CmdOption

    java登录界面命令 由于Tweet,我了解了本系列中第26个基于Java的功能强大的库,该库用于解析命令行参数 . CmdOption在其GitHub主页上被描述为"一个通过注释配置的,用 ...

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

    java登录界面命令 第十二篇有关在Java中处理命令行参数的文章的特色库是带有Java Reflection的命令行参数 (CLAJR). 该"库"是单个Java源文件( CLA ...

  6. java登录界面命令_Java命令行界面(第11部分):CmdLn

    java登录界面命令 这篇文章介绍了如何使用Ostermiller Java Utilities 1.08.02的CmdLn(Java命令行解析器)来处理基于Java的应用程序中的命令行参数. Ost ...

  7. java登录界面命令_Java命令行界面(第13部分):JArgs

    java登录界面命令 JArgs 1.0的区别在于,这是我的第13篇文章的主题,该文章是关于Java命令行参数解析的. JArgs是一个开放源代码( BSD许可 )库,主要由Steve Purcell ...

  8. java登录界面命令_Java命令行界面(第15部分):Jargo

    java登录界面命令 Jargo在其GitHub主页上定义为"一种减轻程序参数/选项处理的工具". 当已经存在许多其他命令行处理库时,该页面为另一个命令行处理库提供了基本原理 ,该 ...

  9. java登录界面命令_Java命令行界面(第16部分):JArgp

    java登录界面命令 这篇文章中介绍的基于Java的命令行参数处理库是IBM developerWorks文章Java编程动态性,第3部分,应用的反射 (第2003 部分,此归档文章于2016年&qu ...

  10. java登录界面命令_Java命令行界面(第19部分):jClap

    java登录界面命令 本系列中第19个帖子的重点是从Java代码解析命令行参数是jClap ( Java命令行参数解析器 ),不应与JCLAP库混淆,该库是我本系列前 一篇文章的重点. 上 一篇 文章 ...

最新文章

  1. jqurey操作select 语法解释
  2. UVA10827球面上的最大和
  3. python怎么实现输入多行文字_介绍一个Python 包,几行代码可实现 OCR 文本识别!...
  4. ElementUI中el-upload中怎样限制上传文件的格式
  5. JavaWeb -- Struts2 ResultType细化, 国际化
  6. JS高级——模块化学习笔记
  7. LeetCode 1808. 好因子的最大数目(整数拆分,乘积最大)
  8. java实现图像处理高通滤波,图像处理入门——滤波 - leo_de_macondo的个人页面 - OSCHINA - 中文开源技术交流社区...
  9. 【重构之法】代码的坏味道
  10. 【Flink-未解决】 FLink TaskManager with id is no longer reachable
  11. mysql数控不小心被删_mysql 数据库信息不小心被删除了, 请问能恢复么
  12. 13. Roman to Integer
  13. [设计模式-结构型]代理模式(Proxy)
  14. c语言指令 符号表,C语言指令、符号表
  15. 安全数组-简易矩阵容器-STL及迭代器仿写作业
  16. 我的编程学习日志(9)--交换A,B值得方法(相加,异或,swap函数)
  17. python调用按键精灵插件_按键精灵必须掌握的命令之插件命令
  18. 2021上半年教资综合素质——主观题
  19. P3376 (最大流 dinic)
  20. 数字签名的生成和验证

热门文章

  1. 洛谷P2497:基站建设(splay、斜率优化)
  2. P1455-搭配购买【图论,并查集,dp,背包】
  3. ssl1063-统计数字【哈希表】
  4. 【结论】游戏(jzoj 1984)
  5. 动态规划训练24 [Phalanx HDU - 2859 ]
  6. JavaFX拖放事件
  7. JVM内存管理------JAVA语言的内存管理概述
  8. Mysql的安装与远程登录
  9. Java 线程池框架核心代码分析
  10. Object.keys方法拿到对象的key值