zoukankan      html  css  js  c++  java
  • Argparse4j

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

    <dependency>
      <groupId>net.sourceforge.argparse4j</groupId>
      <artifactId>argparse4j</artifactId>
      <version>0.3.0</version>
    </dependency>
     1 package Argparse4j;
     2 
     3 import net.sourceforge.argparse4j.ArgumentParsers;
     4 import net.sourceforge.argparse4j.impl.Arguments;
     5 import net.sourceforge.argparse4j.inf.ArgumentParser;
     6 import net.sourceforge.argparse4j.inf.ArgumentParserException;
     7 import net.sourceforge.argparse4j.inf.Namespace;
     8 
     9 import java.util.Collection;
    10 import java.util.Collections;
    11 import java.util.List;
    12 
    13 
    14 /**
    15  * Hello world!
    16  *
    17  */
    18 public class App 
    19 {
    20     private static interface Accumulate {
    21         int accumulate(Collection<Integer> ints);
    22     }
    23 
    24     private static class Sum implements Accumulate {
    25         @Override
    26         public int accumulate(Collection<Integer> ints) {
    27             int sum = 0;
    28             for (Integer i : ints) {
    29                 sum += i;
    30             }
    31             return sum;
    32         }
    33 
    34         @Override
    35         public String toString() {
    36             return getClass().getSimpleName();
    37         }
    38     }
    39 
    40     private static class Max implements Accumulate {
    41         @Override
    42         public int accumulate(Collection<Integer> ints) {
    43             return Collections.max(ints);
    44         }
    45 
    46         @Override
    47         public String toString() {
    48             return getClass().getSimpleName();
    49         }
    50     }
    51 
    52     public static void main(String[] args) {
    53         ArgumentParser parser = ArgumentParsers.newArgumentParser("app")
    54                 .description("Process some integers.");
    55         parser.addArgument("integers")
    56                 .metavar("N")
    57                 .type(Integer.class)
    58                 .nargs("+")
    59                 .help("an integer for the accumulator");
    60         parser.addArgument("--sum")
    61                 .dest("accumulate")
    62                 .action(Arguments.storeConst())
    63                 .setConst(new Sum())
    64                 .setDefault(new Max())
    65                 .help("sum the integers (default: find the max)");
    66         try {
    67             Namespace res = parser.parseArgs(args);
    68 
    69             System.out.println(res);
    70             System.out.print("----");
    71             System.out.println(((Accumulate) res.get("accumulate"))
    72                     .accumulate((List<Integer>) res.get("integers")));
    73             System.out.println(res.get("accumulate"));
    74             System.out.println(res.get("integers"));
    75         } catch (ArgumentParserException e) {
    76             parser.handleError(e);
    77         }
    78     }
    79 
    80 }
    View Code

    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]

  • 相关阅读:
    学习C++的第一天
    2016.12.28
    无主之地
    一种排序
    街区最短问题
    配对类问题
    蛇形填数
    c#unity
    贪心
    台阶
  • 原文地址:https://www.cnblogs.com/shouhongxiao/p/5798587.html
Copyright © 2011-2022 走看看