2014-04-15 8 views
11

Ich bin kürzlich auf einen Java-Snippet gestoßen. Die Funktionsdefinitionen haben ein anderes Format als das, was ich bis jetzt weiß. Im Folgenden ist die codes-void ... params Bedeutung in Java Funktionserklärung

protected Void doInBackground(String... params) { 
     Log.i(TAG, "doInBackground"); 
     //Invoke web method 'PopulateCountries' with dummy value 
     invokeJSONWS("dummy","PopulateCountries"); 
     return null; 
    } 

und eine ähnliche Funktion mit ... im Parameter

protected void onProgressUpdate(Void... values) { 
     Log.i(TAG, "onProgressUpdate"); 
    } 

Was im folgenden Kontext bedeutet ....

Vielen Dank im Voraus!

+0

mögliche Duplikate von [Was ist die Ellipse (...) für in dieser Methode Signatur?] (Http://stackoverflow.com/questions/2367398/what-is-the-ellipsis-for-in-this- Methodensignatur) –

Antwort

3

Androids AsyncTask ein generischer Typ ist.mit der Klasse Void als die Spezifikation des Progress Typ Variable

Wenn Sie eine asynchrone Aufgabe benötigen, die keinen Sinn für Zwischenfortschrittsdaten haben, sollten Sie es als MyTask extends AsyncTask<Something, Void, Something> erklären, und üblichen allgemeine Regeln folgen, wenn Sie sich entscheiden, zu überschreiben onProgressUpdate müssen Sie es als onProgressUpdate(Void... values) deklarieren.

Daher bedeutet Void... nichts anderes als die übliche Vararg-Methode, deren Typ passierte Void.

1

es ist Argumente mit variabler Länge

3

Es gibt optionale Parameter mit Java 5.0. Sie einfach Ihre Funktion wie folgt erklären:

public void doSomething(boolean...optionalFlag) { 
    ... 
} 

Sie mit doSomething() oder doSomething(true) jetzt nennen könnte.

Dies ist "neu" in Java 1.5 und höher (nicht unterstützt in Java 1.4 oder früher).

4
type ... variableName 

Die ellipsis (...) identifiziert eine variable Anzahl von Argumenten und wird in den folgenden Summationsverfahren demonstriert.

static int sum (int ... numbers) 
{ 
    int total = 0; 
    for (int i = 0; i < numbers.length; i++) 
     total += numbers [i]; 
    return total; 
} 
9

es genannt varargs, und es bedeutet, eine beliebige Anzahl von Parametern desselben Typs. Sie können auf Indexbasis wie ein Array zugreifen.

20

Was bedeutet ... in folgendem Zusammenhang.

Gibt variabler Länge Argument, wenn Sie die Methode mit Parametern des Typs nennen wollen sagen String, aber Sie wissen nicht, wie viele Parameter, die Sie weitergeben möchten, können Sie diese verwenden.

wie Sie eine beliebige Anzahl von String Methode übergeben können.

So können Sie Methode wie diese Methoden aufrufen.

für

public void met(String...a) 

können Sie diese Methode aufrufen, indem

ob.met() 
ob.met("a") 
ob.met("a","b") 

und so weiter.

Sie können mehr lesen über sie HERE.