这里会介绍各个模块相关类及方法
定义阶段
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();
/