2012-01-28 7 views
14

Muszę zaimplementować interfejs API do zadania domowego, a mój instruktor użył notacji, której nie znam na temat jednej z metod w API (opartej na javadoc).Parametr String ... w Javie

public void method(String... strs); 

Co oznacza słowo "..."? Później wygląda na to, że będę musiał wywołać tę samą metodę, używając pojedynczego ciągu rzeczywistego parametru, a także wielu rzeczywistych parametrów ciągu znaków ...

Java nie ma argumentów opcjonalnych (według mojej wiedzy), więc jestem trochę zdezorientowany tutaj ...

Odpowiedz

26

To się nazywa varargs; http://docs.oracle.com/javase/6/docs/technotes/guides/language/varargs.html

Oznacza to, że można przekazać dowolną liczbę argumentów do metody (nawet zero).

W metodzie, argumenty zostaną automatycznie umieszczone w tablicy określonego typu, której używa się do uzyskania dostępu do poszczególnych argumentów.

+0

Ah, dzięki za szybką odpowiedź. Nie widziałem tego wcześniej ... Bardzo miło. –

+0

Dodam tylko, że ten typ funkcji nazywa się ** variadic **: http://en.wikipedia.org/wiki/Variadic_function – amphibient

4

Tak, oznacza to, że można przyjąć dowolną liczbę ciągów jako argument dla tej metody.

Dla metody:

public void method(String... strs); 

można nazwać jako:

method(str) 
method(str1, str2) 
method(str1,str2,str3) 

Dowolna liczba arugments będzie działać. W innych światach jest to zamiennik dla:

public void method(String[] str); 
+0

Uh, nie, nie ma (jesteś w połowie poprawny - twoje pierwsze zdanie to jest problem). –

+0

@BrianRoach, o tak, przepraszam, masz rację :) – Johnydep

+0

Nie znalazłem maksymalnego limitu liczby argumentów, które może przyjmować varargs, ale z pewnością więcej niż trzy – Kennet