超强命令行解析工具 Apache Commons CLI 各个模块阅读

本文介绍了Java中处理命令行参数的Option类、OptionGroup类和Options类的定义、方法以及解析过程,包括CommandLineParser接口和DefaultParser的使用,以及HelpFormatter类用于打印帮助信息的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里会介绍各个模块相关类及方法

定义阶段

Option类

一个Option类就是一个命令行选项对象
属性 :

private final String option; // 短选项名称
private String longOption; // 长选项名称
private String argName; // 输入参数的一个提示信息,一般会是参数的类型,比如string,int,boolean等
private String description; // 描述信息
private boolean required; // 选项是否必须存在
private boolean optionalArg; // 参数值可选,比如可以是 -f filepath 或者直接 -f
private int argCount; // 设置接收参数的个数,有时候一个选项可能会接入多个参数值,一般都是一个
private Class<?> type; // 告诉接收参数的数据类型
private List<String> values; // 参数值列表,解析后的
private char valuesep; // values的分隔符

构造方法 :

// 短选项,长选项,是否含参数,选项描述
public Option(String option, String longOption, boolean hasArg, String description)
//短选项,描述  (longOption=null,hasArg=false)
public Option(String option, String description)
//短选项,是否含参数,选项描述 (longOption=null)
public Option(String option, boolean hasArg, String description)
// 通过Builder类来构造 如下 : 
Option.builder()
        .longOpt("global-config")
        .hasArg()
        .desc("Path of the global configuration file for Flink CDC pipelines")
        .build();

方法 :

// 对比两个对象是否相等,内存地址或者对比longOption和option都一样的话返回true
public boolean equals(Object obj)
// 将选项复制,深拷贝
public Object clone()
// 获取opiton 如果为null,就返回longOption
String getKey()
// 其余public方法都是些set get方法

OptionGroup类

OptionGroup类可以将一组选项组织起来,确保用户只能选择其中的一个选项,一般是用在命令行中选项互斥的场景.
可以使用 addOption(String Option) 方法来添加group

Options类

Options类是存放Option类的容器
属性 :

// key 是短选项,value 是Option类
private final Map<String, Option> shortOpts = new LinkedHashMap();
// key 是长选项,value 是Option类
private final Map<String, Option> longOpts = new LinkedHashMap();
/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Antgeek

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值