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

raw*_*esh 12 java eclipse android adt

我最近遇到了一个java片段.函数定义的格式与我迄今所知的格式不同.以下是守则─

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

...参数中的类似功能

protected void onProgressUpdate(Void... values) {
        Log.i(TAG, "onProgressUpdate");
    }
Run Code Online (Sandbox Code Playgroud)

...在以下背景下意味着什么?

Cod*_*roc 25

......在以下背景下意味着什么?

如果要使用类型为say的参数调用方法但是您不知道要传递多少参数,则可以使用此参数来指定可变长度参数String.

因为你可以传递任何数量的String方法.

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

对于

public void met(String...a)
Run Code Online (Sandbox Code Playgroud)

你可以通过调用这个方法

ob.met()
ob.met("a")
ob.met("a","b")
Run Code Online (Sandbox Code Playgroud)

等等.

你可以在这里阅读更多相关信息.


Bla*_*elt 10

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


Ole*_*hin 3

Android的AsyncTask是一个泛型类型。

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

因此,Void...除了通常的 vararg 方法(其类型恰好是 )之外,没有任何其他含义Void