void ... params在java函数声明中的含义

时间:2014-04-15 11:29:10

标签: java android eclipse adt

我最近遇到了一个java片段。函数定义的格式与我现在所知的格式不同。以下是代码 -

  protected Void doInBackground(String... params) {
        Log.i(TAG, "doInBackground");
        //Invoke web method 'PopulateCountries' with dummy value
        invokeJSONWS("dummy","PopulateCountries");
        return null;
    }

和参数

中的...类似的功能
protected void onProgressUpdate(Void... values) {
        Log.i(TAG, "onProgressUpdate");
    }

...在以下背景中的含义是什么?

5 个答案:

答案 0 :(得分:22)

  

......在以下背景下是什么意思。

如果要使用类型为String的参数调用方法,则指定可变长度参数但是您不知道要传递多少参数可以使用它。< / p>

因为您可以将任意数量的String传递给方法。

所以你可以像这些方式调用方法。

public void met(String...a)

您可以通过

调用此方法
ob.met()
ob.met("a")
ob.met("a","b")

等等。

您可以阅读更多相关信息HERE.

答案 1 :(得分:9)

它调用varargs,它表示相同类型的任意数量的参数。您可以按索引访问它,就像数组一样。

答案 2 :(得分:4)

type ... variableName

ellipsis (...)标识可变数量的参数,和 用以下求和方法证明。

static int sum (int ... numbers)
{
   int total = 0;
   for (int i = 0; i < numbers.length; i++)
        total += numbers [i];
   return total;
}

答案 3 :(得分:3)

Java 5.0中有可选参数。只需声明你的功能:

public void doSomething(boolean...optionalFlag) {
    ...
}

您现在可以使用doSomething()doSomething(true)致电。

这是&#34; new&#34;在Java 1.5及更高版本中(Java 1.4或更早版本不支持)。

答案 4 :(得分:1)

它是可变长度参数