java rop

Rop库在其主页上被描述为“用Java编写的轻量级命令行选项解析器”。 Rop的“简介”还指出:“ Rop的设计目的是最小化同时方便,并涵盖了大多数常见的命令行解析用例。” 这篇文章是本系列中有关解析Java命令行参数的系列文章中的第23部分,并且重点介绍了Rop。

就像本系列之前的22个帖子一样,该帖子使用的示例实现了两个命令行选项,一个用于文件路径和名称,一个用于详细级别。 列出示例的完整代码可在GitHub上找到 。

在Rop中,“定义”阶段是通过注释@Command@Option (它们都嵌套在com.github.ryenus.rop.OptionParser类中)完成的。 这显示在下一个代码清单中。

Rop的“定义”阶段

/*** Demonstrates use of Rop for processing command line* parameters in Java.*/
@Command(name="RopDemo", descriptions="Demonstrates ROP for command line processing.")
public class Main
{@Option(opt={"-f", "--file"}, description="Path and name of file.")private String file;@Option(opt={"-v", "--verbose"}, description="Indicates whether verbosity is enabled or not.")private boolean verbose;

在Rop中,“解析”阶段是通过实例化OptionParser一个实例并将其字段在“定义”阶段中进行注释的类的定义传递给Rop来完成的。 这显示在下一个代码清单中。

Rop的“解析”阶段

final OptionParser parser = new OptionParser(Main.class);
parser.parse(arguments);

OptionParser.parse(Class)方法在构造时提供给解析器的实例上隐式调用(通过反射)名称为“ run”的方法。 我已经实现了这种“运行”方法,如下面的代码清单所示。

带拉绳的“审讯”阶段(包括“运行”方法)

/*** Method called implicitly by Rop parser.** @param parser Instance of {@code OptionParser} whose*    "parse" method led to my implicit invocation.*/
private void run(final OptionParser parser)
{out.println("File path/name is " + file + " and verbosity is " + verbose);
}

上述代码清单的“运行”的方法显示“询问”由访问完成@Option -annotated由被填充的字段OptionParser.parse(String[])呼叫。

随后的三个屏幕快照展示了Rop完成的这些“定义”,“解析”和“审讯”阶段。 第一个图像指示未指定所需的“文件”选项时显示的错误消息。 第二张图片描绘了示例的正常行为,该示例处理“文件”和“详细”选项的短名称和长名称的组合。 第三幅图描绘了Rop的内置“帮助”支持,当指定--help选项时显示。

选择框架或库来帮助Java进行命令行解析时,需要考虑Rop的特征。

  • Rop是具有MIT许可证的开源软件。
  • 正如所宣传的,绳子很轻; rop-1.1.1.jar的大小约为18 KB,不需要第三方依赖性。
  • rop-1.1.1.jar的类具有“主要版本:51”,这意味着如果使用这些已编译的类,则需要Java SE 7 。

Rop是基于Java的轻量级库,用于处理易于学习和使用的命令行选项。

其他参考

  • Rop主页
  • ryenus / rop (GitHub)
  • Rop 1.1.1 (Maven)

翻译自: https://www.javacodegeeks.com/2017/10/java-command-line-interfaces-part-23-rop.html

java rop

java rop_Java命令行界面(第23部分):Rop相关推荐

  1. JAVA设计模式总结之23种设计模式(重点!!!)

    JAVA设计模式总结之23种设计模式: 一.什么是设计模式 设计模式遵循的原则有6个: 二.设计模式的三个分类 三.各分类中模式的关键点 四.概说23种设计模式 1.单例模式(Singleton) 2 ...

  2. Java开发中的23种设计模式详解(转)

    设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  3. 【java】java开发中的23种设计模式详解

    设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  4. [剑指offer][JAVA]面试题[第23题][合并K个排序链表][分治][优先队列]

    [问题描述]23.合并K个排序链表 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [1->4->5,1->3->4,2->6 ] ...

  5. android5.1 sdk version,java - Android SDK version 23.6 - Stack Overflow

    Does it support java 8 yet? Eclipse is displaying this as a problem, surely it does support 8 by now ...

  6. 韩顺平循序渐进学java 第21.22.23.24讲 集合

    21.1 引出问题 一个问题? 前面我们学习了数组,充分体会到数组的优越性,就是可以存储同一类型的数据,但是我们假设有这样的需求,大家看看如何解决? 请做一个公司职员薪水管理系统,要求完成如下功能: ...

  7. Java开发中的23种设计模式详解

    设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于 ...

  8. Java学习笔记(No.23)

    Java之CSS3详解(No.23) 1.CSS(Cascading Style Sheets) ​ CSS(Cascading Style Sheets,层叠样式表)是一种用来表现HTML(标准通用 ...

  9. Java知多少(23)类的基本运行顺序

    我们以下面的类来说明一个基本的 Java 类的运行顺序: 1 public class Demo{ 2 private String name; 3 private int age; 4 public ...

最新文章

  1. 5G NR — RAN 的技术演进方向
  2. genymotion报错Your CPU is incompatible with virtualization technologies
  3. SAP外向交货单中的批次拆分应用于免费货物的小问题
  4. mysql三次握手_TCP的三次握手和四次挥手详解
  5. petshop 4.0的数据持久层
  6. n阶自相关matlab代码,随机信号及其自相关函数和功率谱密度的MATLAB实现.doc
  7. oracle 创建日志文件,oracle创建日志文件
  8. MySQL索引常用算法
  9. Bug人生---初看windows核心编程有感
  10. java实现在线预览word(docx)功能
  11. CentOS7 wifi安装配置问题总结
  12. 关于在pyomo框架下无法调用ipopt求解器解决方法
  13. windows如何安装SVN
  14. Office-008 文字转公式:word公式输入
  15. Linux系统的madplay、mplayer音视频播放器的制作
  16. ext表格内容自动换行
  17. 罗杨美慧 20190919-1 每周例行报告
  18. 在服务器上使用grandle打包android源码
  19. java公路车为什么便宜_JAVA公路车真的很垃圾吗?
  20. Android NDK开发一 NDK环境搭建及cmake简介

热门文章

  1. CF1379F1 Chess Strikes Back (easy version)(鸽笼原理、线段树)
  2. P5496-[模板]回文自动机【PAM】
  3. nssl1335-蛋糕切割【数论,GCD】
  4. ssl1010-方格取数
  5. codeforces1438 E.Yurii Can Do Everything
  6. Java中对象的三种状态
  7. 达到年薪 40W 必需掌握的技术
  8. Oracle入门(七B)之表空间删除数据文件未删除
  9. 如何加快github的clone速度
  10. 教学交流研讨会总结(一)