A veces es útil escribir un método que pueda recibir cualquier cantidad de argumentos del mismo tipo. Java proporciona una sintaxis especial para esto llamada varargs (del inglés variable arguments).
Sintaxis y Uso¶
Se declara con tres puntos (...) después del tipo del último parámetro:
public static int sumarTodos(int... numeros) {
int total = 0;
for (int n : numeros) {
total = total + n;
}
return total;
}
// Se puede llamar con cualquier cantidad de argumentos
int r1 = sumarTodos(); // 0 argumentos, retorna 0
int r2 = sumarTodos(5); // 1 argumento, retorna 5
int r3 = sumarTodos(1, 2, 3); // 3 argumentos, retorna 6
int r4 = sumarTodos(1, 2, 3, 4, 5); // 5 argumentos, retorna 15Método con varargs
Implementación Interna¶
Internamente, el compilador convierte los varargs en un arreglo. El método sumarTodos(int... numeros) es equivalente a sumarTodos(int[] numeros), pero con la diferencia de que al llamarlo no hace falta crear el arreglo explícitamente.
// Estas dos llamadas son equivalentes:
sumarTodos(1, 2, 3);
sumarTodos(new int[]{1, 2, 3}); // Creando el arreglo explícitamenteEquivalencia con arreglos
Restricciones¶
Solo puede haber un parámetro varargs por método.
Debe ser el último parámetro de la lista.
// Correcto: varargs al final
public static void imprimir(String prefijo, int... valores) {
System.out.print(prefijo + ": ");
for (int v : valores) {
System.out.print(v + " ");
}
System.out.println();
}
imprimir("Notas", 7, 8, 9, 10); // Imprime: "Notas: 7 8 9 10"
// Error: varargs no está al final
// public static void mal(int... valores, String sufijo) { }Varargs con otros parámetros
Resumen¶
Este capítulo presentó las ideas centrales de Varargs: Cantidad Variable de Argumentos y dejó un marco de referencia para relacionarlas con el resto del recorrido.
Ejercicios¶
Próximo paso¶
Para seguir, conviene pasar a el material siguiente, donde el recorrido continúa sobre esta base.