2013-08-11 18 views
7

W kodzie:Co oznacza "Ciąg ..."?

Co

String... pricingTypes 

oznacza? Jaki to rodzaj konstrukcji?

+0

[Varargs] (http://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html) –

+0

Sprawdź samouczek [arguments] (http://docs.oracle.com /javase/tutorial/java/javaOO/arguments.html), aby dowiedzieć się więcej o varargs. –

Odpowiedz

5

To się nazywa varargs. Działa dla każdego typu, o ile jest to ostatni argument w podpisie.

Zasadniczo dowolna liczba parametrów jest umieszczana w tablicy. Nie oznacza to, że jest to odpowiednik tablicy.

Metoda, która wygląda następująco:

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

będzie miał tablicę gniazda (w tym przykładzie), zwanego baz.

Tak więc, jeśli zadzwonimy pod numer foo(32, sSock.accept(), new Socket()), znajdziemy tablicę z dwoma obiektami Socket.

Wywołanie go jako foo(32, mySocketArray) będzie nie praca jako typ jest nie skonfigurowany tak, aby wziąć tablicę. Jeśli jednak podpis jest zmienną tablic, możesz przekazać jedną lub więcej tablic i uzyskać tablicę dwuwymiarową. Na przykład void bar(int bar, PrintStream[] baz...) może zająć wiele tablic PrintStream i wstawić je do pojedynczego PrintStream[][].

Co dziwne, ze względu na to, że tablice są obiektami, Object... foo może przyjmować dowolną liczbę tablic.