【问题标题】:If Statement dependent on what command line arugment is passed? [duplicate]If 语句取决于传递的命令行参数是什么? [复制]
【发布时间】:2016-08-19 03:18:07
【问题描述】:

我的spring-boot 应用程序可以从command line 运行,arguments 作为参数传递。

我想设置我的main method,这样如果用户将“a”作为参数传递:任务 A 就会运行。如果他们将“b”作为参数传递,则运行任务 B。

我目前正在使用:

if(args.toString().contains("a")){
//run task A
}

有没有更好的方法来做到这一点/上面的实现是否正确?

完整的 Runner 类:

@Component
public class MyRunner implements CommandLineRunner {

    //other code

    @Override
    @Transactional
    public void run(String... args) throws Exception {

        if(args.toString().contains("a")){
            //run task A
        }

        if(args.toString().contains("b")){
            //run task B
        }

    }

}

【问题讨论】:

标签: java arrays spring arguments main


【解决方案1】:

args.toString 不是你想要的,它会返回一个数组的 toString,类似于:[Ljava.lang.String;@15db9742

这更有可能是您想要的:

for(String arg : args) {
    if(arg.equals("a")) { // or .contains
        // run task A
    }
}

【讨论】:

  • 请注意,使用增强版您不会跳过 any 参数。我也不清楚你为什么要费心跳过第一个。
  • 我很困惑,我认为是 c++,第一个参数是完整的命令
猜你喜欢
  • 1970-01-01
  • 2020-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-08
  • 1970-01-01
  • 2017-05-15
相关资源
最近更新 更多