2009-07-22 5 views
5

Ich versuche, einige Java-Code aus einem Tutorial zu lesen, ich verstehe nicht, die Zeile:Was bedeutet "public Weatherman (Integer ... Zips) {" in Java bedeuten

public Weatherman(Integer... zips) { 
  • I versteh nicht, was das ... darstellt, wenn es nur (Integer-Zips) wäre Ich würde verstehen, dass es eine Variable der Klasse Integer namens Zips gibt. Aber die ... verwirren mich.

Antwort

13

Das sind „varargs“ syntaktischer Zucker, die Sie den Konstruktor auf folgende Arten aufrufe können:

new Weatherman() 
new Weatherman(98115); 
new Weatherman(98115, 98072); 
new Weatherman(new Integer[0]); 

Unter den Abdeckungen die Argumente an den Konstruktor als Array übergeben werden, aber Sie tun Sie müssen kein Array erstellen, um es aufzurufen.

0

Wenn ich erinnere mich gut, es wird verwendet, wenn es eine variable Anzahl von Parametern ist

5

, dass ein „Vararg“ ist. Es kann eine beliebige Anzahl von Integer Argumente behandeln, das heißt

new Weatherman(1); 

ist genauso gültig wie

new Weatherman(); 

oder

new Weatherman(1, 7, 12); 

Innerhalb der Methode können Sie die Parameter als Integer Array zugreifen.

2

Vom Java tutorials:

Sie ein Konstrukt verwenden können genannt varargs eine beliebige Anzahl von Werten auf eine Methode zu übergeben. Sie verwenden varargs, wenn Sie nicht wissen, wie viele von einem bestimmten Argumenttyp an die Methode übergeben werden. Es ist eine Verknüpfung zum manuellen Erstellen eines Arrays (die vorherige Methode könnte Varargs anstelle eines Arrays verwendet haben).

Um varargs zu verwenden, folgen Sie dem Typ des letzten Parameters durch eine Ellipse (drei Punkte, ...), dann ein Leerzeichen und den Parameternamen. Die Methode kann dann mit einer beliebigen Anzahl dieses Parameters einschließlich keiner aufgerufen werden.

public Polygon polygonFrom(Point... corners) { 
    int numberOfSides = corners.length; 
    double squareOfSide1, lengthOfSide1; 
    squareOfSide1 = (corners[1].x - corners[0].x)*(corners[1].x - corners[0].x) 
     + (corners[1].y - corners[0].y)*(corners[1].y - corners[0].y) ; 
    lengthOfSide1 = Math.sqrt(squareOfSide1); 
    // more method body code follows that creates 
    // and returns a polygon connecting the Points 
} 

dass Sie sehen können, innerhalb des Verfahrens wird Ecken wie ein Array behandelt. Die Methode kann entweder mit einem Array oder mit einer Sequenz von Argumenten aufgerufen werden. Der Code im Methodenkörper behandelt den Parameter in jedem Fall als ein Array.

3

Sie sehen die varargs feature von Java, verfügbar seit Java 1.5.

zips ist ein Array von Integer innerhalb des Konstruktors, aber der Konstruktor kann mit einer variablen Anzahl von Argumenten aufgerufen werden.

Verwandte Themen