En su caso varargs está bien. Realmente no necesita hacer una matriz de las rutas que va a importar porque no hay nada que quiera hacer con estas rutas, aparte de pasarlas a su método importFrom
.
La funcionalidad varargs le evita tener que crear explícitamente una matriz con el único propósito de pasar una colección de valores a un método único, que parece que tiene aquí.
Por cierto, que puede todavía pasar en una matriz si desea
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");
}
}
Debido a que el comportamiento es el mismo, la diferencia se reduce a una pregunta (probablemente menor) de lo que quiere el método firma para "decir". Cuando declara un método para tomar un parámetro de matriz explícito, es casi como si quisiera enfatizar que desea operar en un objeto de matriz, algo que se ha definido fuera del método y tiene su propia existencia e importancia fuera del método, y uno en el que, tal vez, operaciones como la indexación importan. Al declarar el método con varargs, es como si estuvieras diciendo "solo dame un montón de elementos".
Por otra parte, esto no tiene por qué ser cierto; la JVM no conoce la diferencia, todo lo que ve es una matriz en tiempo de ejecución. Muchos programadores no se molestarán en dividir pelos sobre la intención de la firma del método. Varargs se trata de hacer las llamadas convenientes.
Dicho esto, el principal limitación de varargs es que dicho parámetro debe ser el último del método. En su caso, esto no es un problema, pero en general es algo a considerar.
Aún puede pasar una matriz a un método varargs, se comportará de la misma manera. –