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 Stringparametri 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 iStringparametri che vuoi,String[]è un parametro che è un array di stringhe.(String ...)dipende dal primo parametro diAsyncTask, non è sempreString.