Android向けにプログラミングする場合、AsyncTaskを使用すると、doInBackgroundメソッドは次のようになります。
protected String doInBackground(String... args)
しかし、そのブロックのどこかで引数を使用すると、たとえばプログラムで通常の文字列配列のように引数にアクセスできます
@Override
protected String doInBackground(String... args)
{
String details = "";
try
{
details = facade.getRecipeDetails(args[0]);
}
catch(Exception ex)
{
ex.printStackTrace();
}
return details;
}
これはうまく機能し、私はそれを扱うことに問題はありません。しかし、なぜ通常の文字列配列の代わりに(String。。。args)を使用するのか疑問に思っています。それは、呼び出しメソッドで次のようなものを書くことができるからです:
new AsyncHandler.execute("argument1","argument2","argument3",...)
引数を渡す新しい配列を作成する代わりに?書けたけど
new AsyncHandler().execute(new String[]{"Argument1","Argument2"});
これはもう少し冗長です。
(String ...)とString []は同じように機能しますが、配列を作成する必要がないため、前者を使用すると引数の受け渡しが簡単になりますか?私が知る限り、前者もバックグラウンドで文字列配列に変換されるので、両方とも同じコードにコンパイルされ、それは単に「構文上の砂糖」にすぎませんか?
@FaizanRabbani(ただし、
—
ラチェットフリーク
String...
まるでa と呼ぶこともできる)String[]
@ratchetfreakはい、それはとして機能
—
FaizanRabbani 2014
String[]
できますが、デフォルトであると仮定しますString[]
。String
配列で別のパラメーターを使用することはかなり問題でした。代わりに、使用に柔軟性を与えました(String ...)
。
@FaizanRabbani私はそれが常に文字列ではないことを知っています、それは単なる例です=)。同じことはブール...などにも当てはまりますが、慣れ親しんだmain(String [] args)のため、私はStringを使用するのが好きでした。そして、あなたは「あなたが望むだけ多くの文字列を渡すことができる」と述べました、まああなたは配列でかなりの数の文字列を渡すことができます。私にとっては、配列で同じことを達成できるように思えますが、読みにくく、面倒です。(たとえば、配列の配列を渡すと、読みやすさが少し低下します)。それはそれが主に読みやすさのためであることは正しいですか?(すでにありがとう)
—
ディラン・メウス14
@FaizanRabbaniよく
—
ラチェットフリーク
new String[]{...}
変換するための単純なラップです(実際にを使用すると何が起こるかString...
)
(String ...)
必要なだけString
パラメータを追加できることを意味しますString[]
。これは、文字列の配列である1つのパラメータです。(String ...)
の最初のパラメータに依存しますが、AsyncTask
常にそうとは限りませんString
。