C#では、メソッドに不定の数のパラメーターを持たせたい場合、メソッドシグネチャの最後のパラメーターをparams
にすると、メソッドパラメーターは配列のように見えますが、メソッドを使用するすべてのユーザーがそのタイプのパラメーターは、呼び出し側が望む数だけ。
Javaは同様の動作をサポートしていますが、その方法を見つけることはできません。
Javaこれは varargs と呼ばれ、構文は通常のパラメーターのように見えますが、型の後に省略記号( "...")があります。
public void foo(Object... bar) {
for (Object baz : bar) {
System.out.println(baz.toString());
}
}
Varargパラメーターは、alwaysである必要があり、メソッドシグネチャのlastパラメーターであり、そのタイプの配列を受け取りました(例:Object[]
この場合)。
これはJavaでトリックを行います
public void foo(String parameter, Object... arguments);
3つのポイントを追加する必要があります...
およびvaragr
パラメーターは、メソッドの署名の最後でなければなりません。
以前の回答に書かれているように、それはvarargs
であり、Ellipsis
で宣言されています(...)
さらに、値のタイプまたは参照タイプ、あるいはその両方を混合して渡すことができます(google Autoboxing)。さらに、下のprintArgsAlternate
メソッドで示されているように、methodパラメーターを配列として使用できます。
public class VarargsDemo {
public static void main(String[] args) {
printArgs(3, true, "Hello!", new Boolean(true), new Double(25.3), 'a', new Character('X'));
printArgsAlternate(3, true, "Hello!", new Boolean(true), new Double(25.3), 'a', new Character('X'));
}
private static void printArgs(Object... arguments) {
System.out.print("Arguments: ");
for(Object o : arguments)
System.out.print(o + " ");
System.out.println();
}
private static void printArgsAlternate(Object... arguments) {
System.out.print("Arguments: ");
for(int i = 0; i < arguments.length; i++)
System.out.print(arguments[i] + " ");
System.out.println();
}
}
Arguments: 3 true Hello! true 25.3 a X
Arguments: 3 true Hello! true 25.3 a X