Android için programlama yaparken, bir AsyncTask kullandığımda doInBackground yöntemi böyle görünüyor.
protected String doInBackground(String... args)
Ama bu blokta herhangi bir yerde argüman kullanırken onlara normal bir String dizisi gibi erişebilirim, örneğin programımda
@Override
protected String doInBackground(String... args)
{
String details = "";
try
{
details = facade.getRecipeDetails(args[0]);
}
catch(Exception ex)
{
ex.printStackTrace();
}
return details;
}
Hangi iyi çalışıyor ve onunla ilgili hiçbir sorunum yok. Ama neden normal bir Dizeler dizisi yerine (String... Args) kullandıklarını merak ediyorum. Sadece arama yönteminde sadece şöyle bir şey yazabilirsiniz çünkü:
new AsyncHandler.execute("argument1","argument2","argument3",...)
argümanları iletmek için yeni bir dizi oluşturmak yerine? Yazabilmemize rağmen
new AsyncHandler().execute(new String[]{"Argument1","Argument2"});
ki bu biraz daha ayrıntılı.
(String ...) ve String [] nasıl çalışırlar? Anlayabildiğim kadarıyla, eski de arka planda bir dize dizisine çevrilir böylece her ikisi de aynı kodu derlemek ve sadece 'sözdizimsel şeker' mi?
String...
, sanki bir de sankiString[]
String[]
, ancak varsayılan olarak olduğunu varsayalım String[]
. String
Bir dizide farklı param kullanmak oldukça sorun olurdu . Bunun yerine kullanım esnekliği verdiler (String ...)
.
new String[]{...}
dönüştürmek için basit bir sargı ( a kullandığınızda aslında ne olur String...
)
(String ...)
String
istediğiniz kadar param ekleyebileceğiniz anlamına gelirString[]
, dizelerden oluşan bir parametredir.(String ...)
ilk parametresine bağlıdırAsyncTask
, her zaman değildirString
.