¿Es posible declarar un método que permita un número variable de parámetros?
¿Cuál es el simbolismo utilizado en la definición que indica que el método debe permitir un número variable de parámetros?
Respuesta: varargs
¿Es posible declarar un método que permita un número variable de parámetros?
¿Cuál es el simbolismo utilizado en la definición que indica que el método debe permitir un número variable de parámetros?
Respuesta: varargs
Respuestas:
Eso es correcto. Puede encontrar más información al respecto en la guía de Oracle sobre varargs .
Aquí hay un ejemplo:
void foo(String... args) {
for (String arg : args) {
System.out.println(arg);
}
}
que se puede llamar como
foo("foo"); // Single arg.
foo("foo", "bar"); // Multiple args.
foo("foo", "bar", "lol"); // Don't matter how many!
foo(new String[] { "foo", "bar" }); // Arrays are also accepted.
foo(); // And even no args.
Object...
.
Object... args
funcionará con primitivas debido al autoboxing .
varargs.length
Variable number of arguments
Es posible pasar un número variable de argumentos a un método. Sin embargo, hay algunas restricciones:
Para comprender estas restricciones, considere el método, en el siguiente fragmento de código, utilizado para devolver el entero más grande en una lista de enteros:
private static int largest(int... numbers) {
int currentLargest = numbers[0];
for (int number : numbers) {
if (number > currentLargest) {
currentLargest = number;
}
}
return currentLargest;
}
fuente Oracle Certified Associate Java SE 7 Programmer Study Guide 2012
Para diferentes tipos de argumentos, hay 3 puntos :
public void foo(Object... x) {
String myVar1 = x.length > 0 ? (String)x[0] : "Hello";
int myVar2 = x.length > 1 ? Integer.parseInt((String) x[1]) : 888;
}
Entonces llámalo
foo("Hii");
foo("Hii", 146);
por seguridad, use así:
if (!(x[0] instanceof String)) { throw new IllegalArgumentException("..."); }
El principal inconveniente de este enfoque es que si los parámetros opcionales son de diferentes tipos, pierde la comprobación de tipo estático. Por favor, vea más variaciones .
Sí ... desde Java 5: http://java.sun.com/j2se/1.5.0/docs/guide/language/varargs.html
Sí, Java permite el vargs
parámetro del método.
public class Varargs
{
public int add(int... numbers)
{
int result = 1;
for(int number: numbers)
{
result= result+number;
} return result;
}
}