-1

次の関数 のString...は何を意味しますか?

public UpdateSettingsRequest(String... indices) {
    this.indices = indices;
}
4

1 に答える 1

3

これはvarargsと呼ばれます。署名の最後の引数である限り、どの型でも機能します。

基本的に、任意の数のパラメーターが配列に入れられます。これは、配列と同等であるという意味ではありません。

次のようなメソッド:

void foo(int bar, Socket baz...)

baz と呼ばれる Socket (この例では)の配列を持ちます。

したがって、呼び出すfoo(32, sSock.accept(), new Socket())と、2 つの Socket オブジェクトを含む配列が見つかります。

タイプが配列を取るように構成されていないfoo(32, mySocketArray)ため、 asを呼び出しても機能しません。ただし、署名が配列の可変引数である場合は、1 つ以上の配列を渡して 2 次元配列を取得できます。たとえば、PrintStream の複数の配列を取得して、それらを単一の に貼り付けることができます。void bar(int bar, PrintStream[] baz...)PrintStream[][]

奇妙なことに、配列はオブジェクトであるObject... fooため、任意の数の配列を取ることができます。

于 2013-08-12T13:54:56.810 に答える