2012-01-28 10 views
14

Tengo que implementar una API para una tarea, y mi instructor ha utilizado una notación que desconozco para uno de los métodos en la API (basado en javadoc).String ... parámetro en Java

public void method(String... strs); 

¿Qué significa '...'? Más tarde parece que tendré que llamar a este mismo método utilizando un parámetro real de cadena única, así como varios parámetros reales de cadena ...

Java no tiene argumentos opcionales (que yo sepa), entonces lo estoy un poco confundido aquí ...

Respuesta

26

Se llama varargs; http://docs.oracle.com/javase/6/docs/technotes/guides/language/varargs.html

Significa que puede pasar un número arbitrario de argumentos al método (incluso cero).

En el método, los argumentos se colocarán automáticamente en una matriz del tipo especificado, que se utiliza para acceder a los argumentos individuales.

+0

Ah, gracias por la respuesta rápida. No había visto esto antes ... Muy bien. –

+0

Simplemente agregaría que este tipo de función se llama ** variadic **: http://en.wikipedia.org/wiki/Variadic_function – amphibient

4

Sí, eso significa que puede tomar un número arbitrario de cadenas como argumento para este método.

Para su método:

public void method(String... strs); 

se le puede llamar como:

method(str) 
method(str1, str2) 
method(str1,str2,str3) 

Cualquier ninguna de arugments funcionaría. En otros mundos es un reemplazo para:

public void method(String[] str); 
+0

Uh, no, no es así (usted está medio correcto - su primera oración es el problema). –

+0

@BrianRoach, Oh, sí, lo siento, tienes razón :) – Johnydep

+0

No he encontrado un límite máximo de cuántos argumentos pueden tomar los varargs, pero definitivamente es más de tres – Kennet