В вашем случае с varargs все в порядке. На самом деле вам не нужно создавать массив путей, которые вы будете импортировать, потому что вы ничего не хотите делать с этими путями, кроме как передать их в свой метод importFrom
.
Функциональность varargs избавляет вас от необходимости явного создания массива исключительно с целью передачи коллекции значений в одноразовый метод, который у вас, по-видимому, здесь есть.
Кстати, вы можете по-прежнему передавать массив, если хотите
public class VarargsDemo {
public static void f(String... args) {
for (String s: args) {
System.out.println(s);
}
}
public static void main(String[] args) {
String[] english = new String[]{"one", "two", "three"};
f(english);
f("uno", "dos", "tres");
}
}
Поскольку поведение одно и то же, разница сводится к (возможно, незначительному) вопросу о том, что вы хотите, чтобы сигнатура метода «говорила». Когда вы объявляете метод для получения явного параметра массива, это почти как если бы вы хотели подчеркнуть, что вы хотите работать с объектом массива, что-то, что было определено вне метода и имеет свое собственное существование и важность вне метода, и тот, в котором, возможно, такие операции, как индексация имеют значение. Когда вы объявляете метод с помощью varargs, вы говорите «просто дайте мне кучу предметов».
Опять же, это не должно быть правдой; JVM не знает разницы, все, что она видит, это массив во время выполнения. Многие программисты не будут беспокоиться о том, чтобы обозначить сигнатуру метода. Varargs - все о том, чтобы сделать звонки удобными.
Тем не менее, основное ограничение для varargs состоит в том, что такой параметр должен быть последним в методе. В вашем случае это не проблема, но в целом это то, что нужно учитывать.