は、Javaでvarargs
を示します。 [vararg]
属性は、メソッドが可変数のパラメータを取ることを指定します。
[vararg [, optional-attributes]] return-type function-name(
[optional-param-attributes] param-list,
SAFEARRAY(VARIANT) last-param-name);
可変引数の構文は基本的に右、あなたは可能なパラメータがあることを指定できます。これを実現するために、最後のパラメータは、残りのすべてのパラメータが含まれているVARIANT型のセーフ配列でなければなりませんか?彼らはそこにいても、そこにいてもいけません。それが3つの点の目的です。メソッドを呼び出すと、それらのパラメータの有無にかかわらず呼び出すことができます。これは、メソッドに配列を渡す必要を避けるために行われました。
はthisを見てください:
は、それはvarargs
は基本的にメソッドのオーバーロードで推奨されていない、このような理由のためだ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) //See also here.
{
int[]temp=new int[]{1,2,3,4};
Main main=new Main();
main.show(temp);
main.show(); //<-- This is possible.
}
}
を参照してください。
System.out.printf();
はvarargs
の一例であり、以下のように定義されます。
public PrintStream printf(String format, Object ... args)
{
return format(format, args);
}
フォーマット -形式の文字列構文
引数に記載されているようにフォーマット文字列 - 書式文字列内のフォーマット指定子によって参照引数。書式指定子よりも引数が多い場合、余分な引数は無視されます。引数の数は可変であり、ゼロかもしれません。引数の最大数は、Java仮想マシン仕様で定義されているJava配列の最大次元によって制限されます。ヌル引数の動作は変換によって異なります。
が重複する可能性は(http://stackoverflow.com/questions/1656901/varargs-and-the-argument) –