web-dev-qa-db-ja.com

AsyncTaskのdoInBackground(Params ... params)

doInBackground(Params... params)のパラメータ構文に慣れていません

このタイプのものは何と呼ばれ、どのように利用しますか?

23
dfetter88

DevAとVVVが言ったように、それは「varargs」と呼ばれます。事実上、次の2行のコードは同等です。

public void makeLemonade(String[] args) {

そして

public void makeLemonade(String... args) {

メソッド内のコードは同じですが、それが呼び出されたとき、それらは異なる方法で呼び出されます。最初は次のように呼び出す必要があります:

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

一方、2番目のメソッドのシグネチャは0から(想定される)無限の数の引数を持つことができますが、それらはすべてString引数である必要があります。次の呼び出しはすべて機能します。

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

2つの微妙な違いは、varargsを使用している場合、makeLemonade()をここで合法的に呼び出すことができることです。

59
Travis

それらはVar Argsと呼ばれます。配列のようにUは複数の項目を渡し、params[0] ..などのようにアクセスできます。

3
ngesh

Params... paramsは可変引数を表します。 J2SE5.0で追加されました。これは、任意の数の引数を渡すことができるか、引数の配列params [0]と言うことができることを意味します

おかげでディーパック

1