Java - Как дать метод массив - PullRequest
       12

Java - Как дать метод массив

2 голосов
/ 03 августа 2010

У меня есть метод, подобный следующему:

public void launch(String cmd, String [] args, String workingDir)

Внутри этого метода я вызываю ProcessBuilder .

Как я могу вызвать ProcessBuilder, включая произвольное количество аргументов, включенных в мой параметр args?

Например, как-то так:

ProcessBuilder pb = new ProcessBuilder(cmd, args);

Я заметил, что ProcessBuilder имеет этот конструктор:

ProcessBuilder(List<String> command) 

Может быть, я мог бы использовать это как-то.

Ответы [ 2 ]

7 голосов
/ 03 августа 2010

Как насчет:

public static void launch(String cmd, String[] args, String workingDir) {
    List<String> strArgs = new ArrayList<String>();
    strArgs.add(cmd);
    strArgs.addAll(Arrays.asList(args));
    ProcessBuilder pb = new ProcessBuilder(strArgs);
}
7 голосов
/ 03 августа 2010

ProcessBuilder имеет varargs Конструктор - ProcessBuilder(String... command) - так что вы можете использовать это, но вам нужно будет собрать команду и аргументы в один массив.

В противном случае вы можете использовать другой конструктор следующим образом:

List<String> list = new ArrayList<String>(args.length + 1);
list.add(cmd)
list.addAll(Arrays.asList(args));
ProcessBuilder pb = new ProcessBuilder(list);
...