Атрибут [vararg]
указывает, что метод принимает переменное число параметров.Для этого последний параметр должен быть безопасным массивом типа VARIANT, который содержит все остальные параметры:
[vararg [, optional-attributes]] return-type function-name(
[optional-param-attributes] param-list,
SAFEARRAY(VARIANT) last-param-name);
Синтаксис varargs в основном позволяет вам указать, что есть возможные параметры, верно?Они могут быть там или не могут быть там.Это цель трех точек.Когда вы вызываете метод, вы можете вызывать его с этими параметрами или без них.Это было сделано, чтобы избежать необходимости передавать массивы в методы.
Посмотрите на this :
См. Когда вы используете varargs в 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.
}
}
Это дляПо этой причине varargs
в принципе не рекомендуется при перегрузке методов.
System.out.printf();
является примером varargs
и определяется следующим образом.
public PrintStream printf(String format, Object ... args)
{
return format(format, args);
}
format - Строка формата, как описано в синтаксисе строки формата
args - Аргументы, на которые ссылаются спецификаторы формата в строке формата.Если аргументов больше, чем спецификаторов формата, дополнительные аргументы игнорируются.Количество аргументов является переменным и может быть нулевым.Максимальное количество аргументов ограничено максимальным измерением массива Java, как определено в Спецификации виртуальной машины Java.Поведение нулевого аргумента зависит от преобразования.