argparse4j 是 Python argparse 命令行解析器的 Java 语言移植版。这个要比spring AspectJ 更简单,更方便实现。

<dependency>
<groupId>net.sourceforge.argparse4j</groupId>
<artifactId>argparse4j</artifactId>
<version>0.3.0</version>
</dependency>
 package Argparse4j;

 import net.sourceforge.argparse4j.ArgumentParsers;
import net.sourceforge.argparse4j.impl.Arguments;
import net.sourceforge.argparse4j.inf.ArgumentParser;
import net.sourceforge.argparse4j.inf.ArgumentParserException;
import net.sourceforge.argparse4j.inf.Namespace; import java.util.Collection;
import java.util.Collections;
import java.util.List; /**
* Hello world!
*
*/
public class App
{
private static interface Accumulate {
int accumulate(Collection<Integer> ints);
} private static class Sum implements Accumulate {
@Override
public int accumulate(Collection<Integer> ints) {
int sum = 0;
for (Integer i : ints) {
sum += i;
}
return sum;
} @Override
public String toString() {
return getClass().getSimpleName();
}
} private static class Max implements Accumulate {
@Override
public int accumulate(Collection<Integer> ints) {
return Collections.max(ints);
} @Override
public String toString() {
return getClass().getSimpleName();
}
} public static void main(String[] args) {
ArgumentParser parser = ArgumentParsers.newArgumentParser("app")
.description("Process some integers.");
parser.addArgument("integers")
.metavar("N")
.type(Integer.class)
.nargs("+")
.help("an integer for the accumulator");
parser.addArgument("--sum")
.dest("accumulate")
.action(Arguments.storeConst())
.setConst(new Sum())
.setDefault(new Max())
.help("sum the integers (default: find the max)");
try {
Namespace res = parser.parseArgs(args); System.out.println(res);
System.out.print("----");
System.out.println(((Accumulate) res.get("accumulate"))
.accumulate((List<Integer>) res.get("integers")));
System.out.println(res.get("accumulate"));
System.out.println(res.get("integers"));
} catch (ArgumentParserException e) {
parser.handleError(e);
}
} }

java -jar  com.Argparse4j-1.0-SNAPSHOT.jar 1 X 4 --sum

Namespace(integers=[1, 2, 4], accumulate=Sum)
----7
Sum
[1, 2, 4]

java -jar  com.Argparse4j-1.0-SNAPSHOT.jar 1 3 4

Namespace(integers=[1, 3, 4], accumulate=Max)
----4
Max
[1, 3, 4]

Argparse4j的更多相关文章

  1. An annotation based command line parser

    Java命令行选项解析之Commons-CLI & Args4J & JCommander http://rensanning.iteye.com/blog/2161201 JComm ...

  2. 最新Java技术

    最近在网上查资料碰到好多没接触过的技术,先汇总在这里备用,以后慢慢吸收 1. JNA JNI的替代品,调用方式比JNI更直接,不再需要JNI那层中间接口,几乎达到Java直接调用动态库 2. Smal ...

随机推荐

  1. xampp教程(一):xampp下载,安装,配置,运行PHP的web项目

    本来没有想着弄PHP,但是有同学叫我帮忙启动一下一个PHP写的后台.着实需要去学习一下. 想着安装xampp软件,一个集合了多个服务器,多个数据库,多个后台语言的管理软件. 一.xampp下载 二.安 ...

  2. 作为前端,我为什么选择 Angular 2?

    转自:https://sanwen8.cn/p/2226GkX.html 没有选择是痛苦的,有太多的选择却更加痛苦.而后者正是目前前端领域的真实写照.新的框架层出不穷:它难吗?它写得快吗?可维护性怎样 ...

  3. 基于范围的for循环(STL)

    1. ]={4.99,5.99,6.99,7.99,8.99}; for (double x : prices) cout<<x<<endl; //////////////// ...

  4. idea live template

    最近正在研究如何给idea添加注释模板. 此篇文章是记录在写(开发)注释模板的过程中遇到的坑. 1. methodParameters() 当函数的参数列表为空的时候返回的是: [] 当函数的参数列表 ...

  5. C# 中文在URL中的编码

      UTF-8中,一个汉字对应三个字节,GB2312中一个汉字占用两个字节. 不论何种编码,字母数字都不编码,特殊符号编码后占用一个字节. //按照UTF-8进行编码 string tempSearc ...

  6. debian安装dwm窗口管理器

    我安装debian版本是debian-8.8.0-i386-netinst最小安装 首先去官网下载源代码 http://git.suckless.org/dwm #安装x-window环境 $sudo ...

  7. 利用Border画三角形

    边框 1.边框其实并不是矩形,而是梯形 2.利用边框画三角形: div.a{ width:0px; height:0px; border:10px white solid; border-top-co ...

  8. .NET 随记

    1. goto 常用于 switch语句中2. 字符串相加用 StringBuilder的Append()方法性能好3. str.Trim(',') 清除字符串后的","4. st ...

  9. NodeJS+Express+MongoDB 简单个人博客系统【Study笔记】

    Blog 个人博客系统 iBlog是在学习NodeJs时候一个练手项目Demo 系统支持用户注册/登录,内容文章查看,评论,后台管理(定制显示的分类版块,进行文章内容添加)超级管理员还可进行用户管理等 ...

  10. 关于getHTML()方法和getHtmlAjax()方法 GetHttpLength, 清除HTML标签

    public string getHtml(string Url, string type = "UTF-8") { try { System.Net.WebRequest wRe ...