2011-08-30 22 views
33

El marco de trabajo de primavera utiliza métodos donde puede pasar tantos argumentos como desee.Método de Java con argumentos ilimitados

Me gustaría escribir una función que también puede tomar una cantidad ilimitada de datos. Cómo se llama esta característica para que pueda leer sobre ella. ¿O cómo puedo definirlo?

Muchas gracias.

+0

¿Qué clase tiene ese método? Tal vez sea como static main (String [] args) – jjchiw

+0

Defina "cantidad ilimitada de datos". – pap

Respuesta

93

Se llama varargs.

Permite que un método tome cualquier cantidad de argumentos. Son accesibles como una matriz en el método:

public void foo(String... args) { 
    for (String arg : args) { 
     // do smth with arg. 
    } 
} 

Este es syntactic sugar. El compilador oculta la creación de la matriz, por lo que en lugar de

bar.foo(new String[] {"1", "2", "3"}); 

se escribe

bar.foo("1", "2", "3"); 
4

Para añadir la respuesta del Bozho, también puede tener otros argumentos en su método antes de varargs:

// foo(13, "foo", "bar", "baz"); 
// will print: 
// 13 - |foo||bar||baz| 
public void foo(int a, String... b) { 
    System.out.println(a + " - "); 

    for (String c : b) { 
     System.out.print("|" + c + "|"); 
    } 
} 

Sin embargo, no puede tener argumentos de un tipo diferente después. Estos no funcionan:

public void bar(String... b, int b); 
public void foo(int a, String... b, int b); 
Cuestiones relacionadas