2011-06-14 10 views
22

estoy familiarizado con la sintaxis de parámetros en doInBackground(Params... params)de AsyncTask doInBackground (Parámetros ... params)

¿Qué es este tipo de cosa que se llama, y ​​cómo puedo utilizarlo?

+2

esto le dará una mejor comprensión de cómo el trabajo params: http: // desarrollador. android.com/reference/android/os/AsyncTask.html – dymmeh

+0

Lea la descripción completa aquí: http://stackoverflow.com/questions/6053602/what-arguments-are-passed-into-asynctaskarg1-arg2-arg3/6053673# 6053673 –

Respuesta

55

que Deva y VVV han dicho, que se llama "varargs". Efectivamente, las siguientes dos líneas de código son equivalentes:

public void makeLemonade(String[] args) { 

y

public void makeLemonade(String... args) { 

el código dentro del método sería el mismo, pero cuando se llamaba, serían llamados de manera diferente. La primera tendría que ser llamado como esto:

makeLemonade(new String[]{"lemon1", "lemon2", "lemon3"}); 

mientras que la segunda firma del método podría tener 0 a (una supuesta) infinidad de argumentos, pero todo lo que tendría que ser argumentos de cadena. Todas las siguientes llamadas funcionaría:

makeLemonade("lemon1"); 
makeLemonade("lemon4", "lemon7", "lemon11", "lemon12"); 
makeLemonade(); 
// ... etc ... 

Una sutil diferencia entre los dos es que se puede llamar makeLemonade() legalmente aquí si estás usando varargs.

+4

Explicación perfecta. Gracias. – dfetter88

+0

@Travis ¿Cómo indica que no se deben pasar argumentos? ¿Tienes que seleccionar un tipo aleatorio? –

+0

Para indicar que no se deben pasar argumentos, la firma de su método no incluiría ningún parámetro, por lo tanto, cuando arriba vea "public void makeLemonade (String ... args)", en su lugar usaría "public void makeLemonade()" . Esto le dice al compilador que no se permiten argumentos. Si quisiera llamar al método con 0 argumentos, eso es perfectamente válido, haría exactamente eso y llame a "makeLemonade()". – Travis

3

Se llaman Var Args .. Al igual que una serie .. U puede pasar múltiples artículos y simplemente acceder como params[0] .. etc ..

1

Params... params representa una vararg. Fue agregado en J2SE5.0. Esto significa que puede pasar cualquier número de argumentos o se puede decir array de parámetros params [0]

Gracias Deepak

Cuestiones relacionadas