C# では、メソッドに不定の数のパラメーターを持たせたい場合、メソッド シグネチャの最後のパラメーターを a にすることができます。params
これにより、メソッド パラメーターは配列のように見えますが、メソッドを使用するすべてのユーザーがその型のパラメーターをできるだけ多く渡すことができます。呼び出し元が望むように。
Javaが同様の動作をサポートしていると確信していますが、その方法がわかりません。
C# では、メソッドに不定の数のパラメーターを持たせたい場合、メソッド シグネチャの最後のパラメーターを a にすることができます。params
これにより、メソッド パラメーターは配列のように見えますが、メソッドを使用するすべてのユーザーがその型のパラメーターをできるだけ多く渡すことができます。呼び出し元が望むように。
Javaが同様の動作をサポートしていると確信していますが、その方法がわかりません。
Java ではvarargsと呼ばれ、構文は通常のパラメーターのように見えますが、型の後に省略記号 ("...") が付いています。
public void foo(Object... bar) {
for (Object baz : bar) {
System.out.println(baz.toString());
}
}
vararg パラメーターは常にメソッド シグネチャの最後のパラメーターである必要があり、その型の配列を受け取ったかのようにアクセスされます (Object[]
この例では)。
これはJavaでトリックを行います
public void foo(String parameter, Object... arguments);
3 つのポイントを追加する必要が...
あり、varagr
パラメーターはメソッドの署名の最後にある必要があります。
以前の回答に書かれているように、それは( ... )varargs
で宣言されていますellipsis
さらに、値型および/または参照型、または両方を混合して渡すことができます (google Autoboxing )。さらに、以下のメソッドで示されているように、メソッド パラメーターを配列として使用できprintArgsAlternate
ます。
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