【发布时间】:2014-08-05 02:20:37
【问题描述】:
我有两个枚举,一个用于应用程序,一个用于环境。我希望能够以任何顺序给出这些参数,所以我可以给出 -app app1 app1 -env env1 env2 或 -env env1 env2 -app app1 app2。现在我只能做第一个。我还希望能够只说 -app app1 app2 它运行我在所有环境中列出的所有应用程序,并且对于环境也是如此,但我更关心能够以任一顺序提供它们。
for(int i = 0; i<args.length; i++)
{
if(args[i].equals("-app"))
{
indexOfApp = i;
}else if(args[i].equals("-env"))
{
indexOfEnv = i;
}
}
int countOfApp = -1;
int countOfEnv = -1;
if(indexOfApp != -1 && indexOfEnv != -1)
{
countOfApp = indexOfEnv - 1;
countOfEnv = args.length - (indexOfEnv + 1);
}
System.out.println(countOfApp);
System.out.println(countOfEnv);
for(int appIndex = indexOfApp + 1; appIndex < countOfApp + 1; appIndex++){
appList.add(args[appIndex]);
}
for(String item : appList )
{
Application app = Application.valueOf(Application.class, item);
appList2.add(app);
}
for(int envIndex = indexOfEnv + 1; envIndex < args.length; envIndex++){
envList.add(args[envIndex]);
}
for(String item : envList )
{
Environment env = Environment.valueOf(Environment.class, item);
envList2.add(env);
}
} System.out.println(appList); System.out.println(envList);
Application.chooseAppTest(appList2, envList2);
【问题讨论】:
-
为什么不使用库? JOpt、Commons CLI、JCommander、Args4j、...其中大部分将提供您所寻找的开箱即用的东西。
-
我发现了一个很长的命令行参数解析器列表:stackoverflow.com/a/7829772/10077
-
@RobbyCornelissen 我的经理(我只是一名实习生)告诉我,通常使用库会更好,但现在使用它会使运行它变得复杂。跨度>
-
我知道这听起来很愚蠢,但我应该在这里重新发明轮子。
标签: java command-line-arguments