El atributo [vararg]
especifica que el método toma un número variable de parámetros. Para lograr esto, el último parámetro debe ser una matriz segura de tipo Variant que contiene todos los parámetros restantes:
[vararg [, optional-attributes]] return-type function-name(
[optional-param-attributes] param-list,
SAFEARRAY(VARIANT) last-param-name);
La sintaxis varargs básicamente permite especificar que existen posibles parámetros, ¿verdad? Ellos pueden estar allí, o no pueden estar allí. Ese es el propósito de los tres puntos. Cuando llama al método, puede llamarlo con o sin esos parámetros. Esto se hizo para evitar tener que pasar matrices a los métodos.
Tener un vistazo a this:
Ver When do you use varargs in Java?
final public class Main
{
private void show(int []a)
{
for(int i=0;i<a.length;i++)
{
System.out.print(a[i]+"\t");
}
}
private void show(Object...a)
{
for(int i=0;i<a.length;i++)
{
System.out.print(a[i]+"\t");
}
System.out.println("\nvarargs called");
}
public static void main(String... args)
{
int[]temp=new int[]{1,2,3,4};
Main main=new Main();
main.show(temp);
main.show(); //<-- This is possible.
}
}
Es por esta razón, varargs
básicamente no se recomienda en la sobrecarga de métodos.
System.out.printf();
es un ejemplo de varargs
y definido como sigue.
public PrintStream printf(String format, Object ... args)
{
return format(format, args);
}
formato - Una cadena de formato como se describe en la sintaxis de cadena de formato
args - argumentos que hacen referencia los especificadores de formato en la cadena de formato. Si hay más argumentos que especificadores de formato, los argumentos adicionales se ignoran. La cantidad de argumentos es variable y puede ser cero. El número máximo de argumentos está limitado por la dimensión máxima de una matriz de Java, tal como se define en la Especificación de máquina virtual de Java. El comportamiento en un argumento nulo depende de la conversión.
¿Por qué tiene el punto y coma al final de la función? – Ankit