Atrybut [vararg]
określa, że metoda przyjmuje zmienną liczbę parametrów. Aby tego dokonać, ostatni parametr musi być bezpieczny tablicą typu wariant, który zawiera wszystkie pozostałe parametry:
[vararg [, optional-attributes]] return-type function-name(
[optional-param-attributes] param-list,
SAFEARRAY(VARIANT) last-param-name);
Składnia varargs zasadzie pozwala określić, że możliwe są parametry, prawda? Mogą tam być lub nie mogą tam być. Taki jest cel trzech kropek. Po wywołaniu tej metody można ją wywołać z tymi parametrami lub bez nich. Zostało to zrobione, aby uniknąć konieczności przekazywania tablic do metod.
Wystarczy popatrzeć na this:
Zobacz 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.
}
}
To z tego powodu, varargs
nie jest w zasadzie zaleca się przeciążania metod.
System.out.printf();
jest przykładem varargs
zdefiniowanych poniżej.
public PrintStream printf(String format, Object ... args)
{
return format(format, args);
}
Format - Ciąg formatu, jak opisano w format string składni
args - Argumenty użyte przez specyfikatorów formatu w ciągu formatu. Jeśli istnieje więcej argumentów niż specyfikatory formatu, dodatkowe argumenty są ignorowane. Liczba argumentów jest zmienna i może wynosić zero. Maksymalna liczba argumentów jest ograniczona przez maksymalny wymiar tablicy Java zdefiniowany w specyfikacji wirtualnej maszyny języka Java. Zachowanie w przypadku argumentu zerowego zależy od konwersji.
Dlaczego masz średnik na końcu funkcji? – Ankit