2013-08-11 6 views
7

Im Code:Was bedeutet "String ..."?

Was bedeutet

String... pricingTypes 

? Welche Art von Konstrukt ist das?

+0

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

+0

Überprüfen Sie die [Argumente Lernprogramm] (http://docs.oracle.com /javase/tutorial/java/javaOO/arguments.html) über varargs zu lernen. –

Antwort

5

Es wird varargs genannt. Es funktioniert für jeden Typ, solange es das letzte Argument in der Signatur ist.

Grundsätzlich wird eine beliebige Anzahl von Parametern in ein Array eingegeben. Dies bedeutet nicht, dass es einem Array entspricht.

Ein Verfahren, das wie folgt aussieht:

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

wird eine Array von Socket (in diesem Beispiel) haben Baz genannt.

Also, wenn wir foo(32, sSock.accept(), new Socket()) nennen wir ein Array mit zwei Socket-Objekte finden.

es als foo(32, mySocketArray) Aufruf wird nicht Arbeit als Typ ist nicht konfiguriert, um ein Array zu nehmen. Wenn die Signatur jedoch aus mehreren Arrays besteht, können Sie ein oder mehrere Arrays übergeben und ein zweidimensionales Array erstellen. Zum Beispiel kann void bar(int bar, PrintStream[] baz...) mehrere Arrays von PrintStream aufnehmen und sie in einem einzigen PrintStream[][] stecken.

Seltsamerweise, aufgrund der Tatsache, dass Arrays Objekte sind, kann Object... foo beliebig viele Arrays aufnehmen.