Durante la programmazione per Android, ogni volta che utilizzo un AsyncTask il metodo doInBackground è simile al seguente.
protected String doInBackground(String... args)
Ma quando uso gli argomenti ovunque in quel blocco, posso accedervi come un normale array di stringhe, ad esempio nel mio programma
@Override
protected String doInBackground(String... args)
{
String details = "";
try
{
details = facade.getRecipeDetails(args[0]);
}
catch(Exception ex)
{
ex.printStackTrace();
}
return details;
}
Il che funziona bene e non ho problemi a gestirlo. Ma mi chiedo perché usano (String ... args) invece di un normale array di stringhe. È solo perché nel metodo di chiamata puoi semplicemente scrivere qualcosa del tipo:
new AsyncHandler.execute("argument1","argument2","argument3",...)
invece di creare un nuovo array per passare gli argomenti? Anche se potremmo scrivere
new AsyncHandler().execute(new String[]{"Argument1","Argument2"});
che è un po 'più dettagliato.
(String ...) e String [] sono sinonimi di come funzionano, ma il passaggio degli argomenti è semplicemente più semplice usando il primo perché non è necessario creare un array? Per quanto ne so, il primo viene anche tradotto in una matrice di stringhe in background, quindi si comporterebbero entrambi nello stesso codice ed è solo "zucchero sintattico"?
String...
come se fosseString[]
String[]
, ma supponiamo che sia stato di default String[]
. Sarebbe stato un bel problema usare String
parametri diversi in un array. Invece hanno dato una flessibilità da usare (String ...)
.
new String[]{...}
conversione (è quello che succede effettivamente quando si usa un String...
)
(String ...)
significa che puoi aggiungere tutti iString
parametri che vuoi,String[]
è un parametro che è un array di stringhe.(String ...)
dipende dal primo parametro diAsyncTask
, non è sempreString
.