Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无效的java函数声明中的参数含义_Java_Android_Eclipse_Adt - Fatal编程技术网

无效的java函数声明中的参数含义

无效的java函数声明中的参数含义,java,android,eclipse,adt,Java,Android,Eclipse,Adt,我最近遇到了一个java代码段。函数定义的格式与我现在知道的不同。以下是代码- protected Void doInBackground(String... params) { Log.i(TAG, "doInBackground"); //Invoke web method 'PopulateCountries' with dummy value invokeJSONWS("dummy","PopulateCountries");

我最近遇到了一个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");
    }

在以下上下文中,
是什么意思?

它是可变长度参数

Java 5.0有可选参数。只需像这样声明您的函数:

public void doSomething(boolean...optionalFlag) {
    ...
}
现在可以使用
doSomething()
doSomething(true)
调用

这在Java1.5及更高版本中是“新的”(Java1.4或更早版本不支持)

省略号(…)
标识了数量可变的参数,并且 在下面的求和方法中演示

static int sum (int ... numbers)
{
   int total = 0;
   for (int i = 0; i < numbers.length; i++)
        total += numbers [i];
   return total;
}
静态整数和(整数…数字)
{
int-total=0;
for(int i=0;i
它称为
varargs
,它表示相同类型的任意数量的参数。您可以按索引访问它,就像访问数组一样

什么是。。。意思是在下面的上下文中

当您想要使用类型为say
String
的参数调用方法,但您不知道要传递多少个参数时,这指定了可变长度参数

因为您可以将任意数量的
字符串
传递给方法

所以您可以像这样调用方法

为了

您可以通过以下方式调用此方法:

ob.met()
ob.met("a")
ob.met("a","b")
等等

您可以阅读更多有关它的信息

Android是一种通用类型

当您需要一个没有中间进度数据的异步任务时,您应该使用类
Void
作为
progress
类型变量的规范,将其声明为
MyTask extensed AsyncTask
,并遵循通常的通用规则,如果决定覆盖
onProgressUpdate
,则必须将其声明为
onProgressUpdate(Void…values)

因此,
Void…
并不意味着除了通常的vararg方法之外的任何东西,该方法的类型恰好是
Void

的可能重复
public void met(String...a)
ob.met()
ob.met("a")
ob.met("a","b")