varargs tipos parametros indefinidos ejemplos declaracion argumentos java arguments parameter-passing variadic-functions

parametros - tipos de variables en java netbeans



Número de variable Java o argumentos para un método (6)

¿Es posible declarar un método que permita una cantidad variable de parámetros?

¿Cuál es el simbolismo utilizado en la definición que indica que el método debe permitir una cantidad variable de parámetros?

Respuesta: varargs



Sí Java permite vargs en el parámetro de método.

class  Varargs{public int add(int... numbers){ int result = 1; for(int number: numbers){result= result+numbers;  }  return result; }}


Si es posible:

public void myMethod(int...numbers) { ... }


Si puede usar diferentes tipos de argumentos, entonces use:

public void foo(Object... x) { String first = x.length > 0 ? (String)x[0] : "Hello"; int duration = x.length > 1 ? Integer.parseInt((String) x[1]) : 888; } foo("Hii", ); foo("Hii", 146);

por seguridad, use esto:
if (!(x[0] instanceof String)) { throw new IllegalArgumentException("..."); }

El principal inconveniente de este enfoque es que si los parámetros opcionales son de tipos diferentes, se pierde la comprobación del tipo estático. Por favor, vea más variaciones .


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.


Variable number of arguments

Es posible pasar una cantidad variable de argumentos a un método. Sin embargo, hay algunas restricciones:

  • La cantidad variable de parámetros debe ser del mismo tipo
  • Se tratan como una matriz dentro del método
  • Deben ser el último parámetro del método

Para comprender estas restricciones, considere el método, en el siguiente fragmento de código, utilizado para devolver el número 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