java登录界面命令
这篇文章中介绍的基于Java的命令行参数处理库是IBM developerWorks文章Java编程动态性,第3部分,应用的反射 (第2003 部分,此归档文章于2016年“归档”,但仍可通过PDF下载 )的特色库。 。 该库称为JArgp ( Java命令行参数处理库 ),在其主页上定义为“用于在Java中处理命令行参数的库”。 该页面添加:“与大多数其他此类库不同,JArgp使用反射将实际值直接存储到目标应用程序对象中的字段。” JArgp 1.0在这篇文章中具有特色。
JArgp是一个简约的库,如JArgp JAR中的少数类所示。
在JArgp中,“定义”阶段是通过指定ParameterDef实例数组来完成的。 可以编写自定义类来扩展ParameterDef
类,但是我将能够使用该类提供的两个扩展( StringDef和BoolDef )来实现本系列前面的文章中实现的文件路径/名称和详细参数。 这在下一个代码清单中得到了示例(完整的代码将在GitHub上提供 )。
JArgp的“定义”阶段
private static final ParameterDef[] PARAMETERS_DEFINITIONS =
{new StringDef('f', "file", "File path and name"),new BoolDef('v', "verbose", "Verbosity level")
};
ParameterDef
扩展类StringDef
和BoolDef
的构造函数的初始参数是单个字符,它将成为命令行标志。 在这种情况下,定义的命令行参数标志对于文件路径/名称将为“ -f”,对于详细程度将为“ -v”。 每个构造函数的第二个参数是将与命令行标志关联的任何值写入的类的字段的名称。 每个构造函数的第三个参数是对该命令行参数标志的描述。 据我所知,无法指定“长”参数名称(在这种情况下,无法指定--file
或--verbose
)。
“解析”阶段是通过调用静态ArgumentProcessor方法processArgs(String [],ParameterDef [],Object)在JArgp中完成的。 下一个代码清单中对此进行了举例说明。
JArgp中的“解析”
final Main instance = new Main();
// The integer returned by the next invocation is actually the
// zero-based index of next argument to be processed
final int numberArgumentsProcessed= ArgumentProcessor.processArgs(
arguments, PARAMETERS_DEFINITIONS, instance);
通过访问实例中名称与参数定义中提供的名称匹配的字段,可以实现JArgp的“询问”阶段。 这显示在下一个代码清单中。
JArgp中的“审讯”阶段
out.println("File path/name is " + instance.file+ " and verbosity is " + instance.verbose);
下一个屏幕快照演示了到目前为止显示的代码的使用。
如果我想在定义命令行标志时将我提供的描述应用于命令行标志,则可以使用实例方法进行解析,而不是使用前面介绍的静态函数方法。 下一个代码清单中对此进行了演示。
final Main instance = new Main();
final ArgumentProcessor argumentProcessor= new ArgumentProcessor(PARAMETERS_DEFINITIONS);
argumentProcessor.processArgs(arguments, instance);
argumentProcessor.listParameters(50, out);
上一个代码清单的最后一行演示了如何使用ArgumentProcessor.listParameters(int,PrintStream)方法将标志及其描述写入输出。 下一个屏幕快照将演示此输出。
选择框架或库来帮助Java进行命令行解析时,有Jargp的特征需要考虑。
- JArgp是开源的,可以在主要项目页面 ( Sosnoski Software Associates )上查看其许可证。
- jargp.jar文件的大小仅为10 KB。
- 这篇文章中介绍的JArgp库不同于另一个也称为JArgP的库-Java Command Line Argument Parser (来自Sosnoski Software Associates的 JArg p与来自Munkei Software的 JArg P )。
JArgp是用于在Java中处理命令行参数的简约库。 默认情况下,它不支持“长”参数名称,并且不支持本系列中介绍的其他某些库那么多的功能,但是它很小且易于使用。 我之所以将它主要包含在本系列文章中是因为其背景与IBM DeveloperWorks文章相关 。
其他资源
- JArgp项目页面
- JArgp下载 (SourceForge)
- JArgp API文档 (Javadoc)
- Java编程动力学,第3部分,应用反射 :构建命令行参数框架
翻译自: https://www.javacodegeeks.com/2017/09/java-command-line-interfaces-part-16-jargp.html
java登录界面命令