2013-05-21 10 views
14

Ich bin in Java arbeiten und die typische Art und Weise Sie mehrere Argumente für eine Methode angeben ist:Proper Terminologie für Object ... args

public static void someMethod(String[] args) 

Aber ich habe eine andere Art und Weise ein paar Mal gesehen, auch in der Standard-Java-Bibliothek. Ich weiß nicht, wie ich mich darauf im Gespräch beziehen soll, und das Googeln ist aufgrund der verwendeten Zeichen nicht sehr hilfreich.

public static void someMethod(Object... args) 

ich das wissen können Sie Zeichenfolge ein Bündel oder Argumente in eine Methode, ohne vor der Zeit genau zu wissen, wie viele es auch sein mag, wie zum Beispiel:

someMethod(String arg1, String arg2, String arg3, ... etc 

Wie Sie auf diese Art beziehen der Methodensignatureinstellung? Ich denke, es ist großartig und praktisch und möchte es einigen anderen erklären, aber ich weiß nicht, wie ich mich darauf beziehen soll. Vielen Dank.

+2

See [varargs] (http://docs.oracle.com/javase/7/docs/technotes/guides/language/varargs.html) – Reimeus

Antwort

14

Auf diese Weise Argumente zum Ausdruck bringen wird varargs genannt und wurde in Java 5.
Sie eingeführt können here sie mehr darüber lesen.

+0

Sieht aus wie C/C++ Hauptfunktionen –

+0

@huseyintugrulbuyukisik? in der C/C++ Hauptfunktion ist entweder 'main (void)' oder 'main (int argc, char * argv [])' ... nicht ganz gleich ... es sei denn, ich verpasse etwas? – SnakeDoc

+1

Sie haben Recht. Es tut uns leid. –

5

Die Parametermethode (Objekt ... args) heißt varargs. Versuchen Sie diese link.

5

Wie ein Keppil und Steve Benett darauf hingewiesen, dass diese Java-Funktion Varargs genannt wird.

Wenn ich mich nicht irre, erwähnt Joshua Bloch, dass es einen Performance-Hit für die Verwendung von Varargs gibt und empfiehlt das telescoping und die varargs-Methode als Fang aller Senke.

public static void someMethod(Object arg) { 
    // Do something 
} 

public static void someMethod(Object arg1, Object arg2) { 
    // Do something 
} 

public static void someMethod(Object arg1, Object arg2, Object arg3) { 
    // Do something 
} 

public static void someMethod(Object ... args) { 
    // Do something 
} 
+1

+1 großartige Ergänzung zu diesem Gespräch. Ich denke, das ist der Link von Jashua Bloch: http://jtechies.blogspot.com/2012/07/item-42-use-varargs-judiciously.html Macht Sinn, und dies scheint ein guter Weg zu gehen über die Varags mit Leistung im Kopf. – SnakeDoc