2012-07-27 4 views
14

Was zeigen drei Punkte (...) an, wenn sie als Teil von Parametern während der Methodendefinition verwendet werden?Was zeigen drei Punkte (...) an, wenn sie als Teil von Parametern während der Methodendefinition verwendet werden?

Gibt es auch einen Programmierbegriff für das Symbol dieser 3 Punkte?

bemerkte ich in einem Codebeispiel:

public void method1 (Animal... animal) { 
// Code 
} 

Und diese Methode wurde von zwei Stellen aufgerufen. Die Argumente übergeben, während waren aber in beiden Szenarien unterschiedliche Aufruf:

  1. Array von Objekten als Argument an method1 geben wird (Tier ...)

  2. Objekt der Klasse Tier als Argument an method1 geben (Tier ...)

so ist es so etwas wie, wenn Sie nicht sicher sind, ob Sie ein einzelnes Element eines Arrays oder das gesamte Array als Argument der Methode wird vorbei, verwenden Sie 3 Punkte als Teil von Parametern in der Methodendefinition?

Bitte lassen Sie mich auch wissen, wenn es einen Programmierbegriff für das Symbol dieser 3 Punkte gibt.

Antwort

16

Es heißt Varargs.

Es bedeutet, dass Sie so viele von diesem Typ übergeben können, wie Sie möchten.

Es tatsächlich übersetzt es in method1(Animal[] a) und Sie verweisen sie als a[1] wie Sie jedes andere Array.

Wenn ich habe folgende

Cat whiskers = new Cat(); 
Dog rufus = new Dog(); 
Dolphin flipper = new Dolphin(); 

method1(whiskers, rufus, flipper); // okay! 
method1(rufus); // okay! 
method1(); // okay! 
method1(flipper,new Parakeet()); // okay! 
4

Das bedeutet, dass die Methode ein Array dieser Art von Gegenständen übernimmt aber, dass Array wird automatisch erstellt, wenn Sie durch Komma mehr Objekte dieses Typs getrennt passieren.

Beachten Sie, dass in einer Methodensignatur nur ein vararg-Parameter eines bestimmten Typs vorhanden sein kann und Sie in der Signatur nach dem vararg kein anderes Argument desselben Typs haben können (offensichtlich würde es keinen Weg geben) zwischen den beiden unterscheiden).

1

Dies bedeutet, dass null oder mehr String-Objekte (oder ein Array davon) als Parameter für diese Funktion übergeben werden können.

Vielleicht:

x("foo", "bar"); 
x("foo", "bar", "baz"); 
Verwandte Themen