2014-01-23 6 views
7

Blick auf die Methoden von the Array class on libgdx. Ich fand diese Methode:Was ist "T ..." auf Java?

public void addAll (T... array) { 
    addAll(array, 0, array.length); 
} 

ich nie gesehen hatte „T ...“ vor, und es stellt sich heraus, dass es unglaublich schwer ist, zu suchen „T ...“ entweder auf Google oder hier auf Stack-Überlauf . Ich denke, ich verstehe Generika, aber das "..." ist neu für mich.

Was bedeutet das? Also, zum Beispiel, wenn T String ist, wie würde ich dann diese Methode verwenden? Warum sollte ich es benutzen? Und wie wäre das anders als die Verwendung von "T []"?

Antwort

24

Die T... ist nur eine varargs parameter, wo der Elementtyp ist T, der generische Typ Parameter der Klasse.

Der Punkt ist, dass Sie die Methode wie folgt aufrufen können (array Annahme, daß ein Array<String>):

array.addAll("x", "y", "z"); 

, die gleich sein

array.addAll(new String[] { "x", "y", "z" }); 

Auch dies ohne Generika verwendet werden kann. Zum Beispiel:

public static int sum(int... elements) { 
    int total = 0; 
    for (int element : elements) { 
     total += element; 
    } 
    return total; 
} 

varargs Parameter in Java eingeführt wurden 5.

+3

T Teil von Generika ist jedoch, obwohl in diesem Fall ist es mit varargs verwendet. – SnakeDoc

+2

@SnakeDoc: Ja, aber ich denke, es ist das Varargs-Bit, das der OP nicht verstanden hat. –

+0

ah, ich verstehe. vielleicht eine Verbindung zu Generika nur der Vollständigkeit halber? – SnakeDoc

7

Es gibt zwei Dinge hier:

Erstens, ist dies wahrscheinlich eine Klasse, die Generics verwendet, so dass die T ist ein parametrisierter Typ.

Zweitens, die T... Parameter Deklaration ist ein varargs