114

C# では、メソッドに不定の数のパラメーターを持たせたい場合、メソッド シグネチャの最後のパラメーターを a にすることができます。paramsこれにより、メソッド パラメーターは配列のように見えますが、メソッドを使用するすべてのユーザーがその型のパラメーターをできるだけ多く渡すことができます。呼び出し元が望むように。

Javaが同様の動作をサポートしていると確信していますが、その方法がわかりません。

4

3 に答える 3

200

Java ではvarargsと呼ばれ、構文は通常のパラメーターのように見えますが、型の後に省略記号 ("...") が付いています。

public void foo(Object... bar) {
    for (Object baz : bar) {
        System.out.println(baz.toString());
    }
}

vararg パラメーターは常にメソッド シグネチャの最後のパラメーターである必要があり、その型の配列を受け取ったかのようにアクセスされます (Object[]この例では)。

于 2009-02-06T10:06:25.703 に答える
11

これはJavaでトリックを行います

public void foo(String parameter, Object... arguments);

3 つのポイントを追加する必要が...あり、varagrパラメーターはメソッドの署名の最後にある必要があります。

于 2009-02-06T10:07:18.197 に答える
3

以前の回答に書かれているように、それは( ... )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 
于 2016-03-31T12:46:59.983 に答える