例如我有这样的代码:(from here)
private class LongOperation extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {}
@Override
protected void onPostExecute(String result) {}
@Override
protected void onPreExecute() {}
@Override
protected void onProgressUpdate(Void... values) {
}
}
该方法参数中的3个点是做什么的?
答案 0 :(得分:8)
这三个点被称为varargs
,在这里,允许您将多个字符串传递给方法,如下所示:
doInBackground("hello","world");
//you can also do this:
doInBackground(new String[]{"hello","world"});
在方法doInBackground
中,您可以枚举varargs变量params
,如下所示:
for(int i=0;i<params.length;i++){
System.out.println(params[i]);
}
所以它基本上是doInBackground
答案 1 :(得分:4)
编译器将三个点...
视为接收该对象的数组。在这种情况下String
和Void
。传入的对象数量是数组的大小。
因此:
doInBackground("Hi", "Hello", "Bye")
将创建一个长度为3的String
数组。
答案 2 :(得分:2)
此概念称为 varargs 并解释here