如何在Java中处理命令行参数

Mac*_*iek 1 java design-patterns

假设我有一个简单的程序,它采用以下形式之一的参数输入
do1 inputLocation outputLocation do2 inputLocation
outputLocation
do3 [30或60或90] inputLocation
outputLocation do4 [PD或C] inputLocation
outputLocation do5 [GHI] inputLocation outputLocation

我还需要在程序中调用5个具有相同名称的函数.到目前为止,我想过这样做(在"半伪代码"中)

static void main(String[] args)
{
    if (args.length == 3)
        processTriple(args);
    if (args.length == 4)
        processQuadruple(args);
    throw new UnsupportedOperationException("dasdhklasdha");
}
Run Code Online (Sandbox Code Playgroud)

过程函数看起来像这样

processDouble(String args[])
{
    String operation = "args[0]";
    Location input = getInput(args[1]);
    Location output = getInput(args[2]);
    if (operation.equals("do1"))
        do1(input,output);
    if (operation.equals("do2"))
        do2(input,output);
    ... etc
}
Run Code Online (Sandbox Code Playgroud)

我这样做的方式似乎不太可扩展.如果一个函数的参数发生了变化,或者添加了新函数,那么这似乎很难维护.什么是"最好"的方式来做这样的事情

Gab*_*osa 9

在这一点上,我会使用commons-clijargs.除非您尝试使用参数做一些非常特殊的事情,否则我会说关注应用程序的实际业务并且不处理应用程序参数的混乱