Java泛型中的3个点是什么意思?

时间:2013-07-12 20:10:06

标签: java

例如我有这样的代码:(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个点是做什么的?

3 个答案:

答案 0 :(得分:8)

这三个点被称为varargs,在这里,允许您将多个字符串传递给方法,如下所示:

doInBackground("hello","world");
//you can also do this:
doInBackground(new String[]{"hello","world"});

Documentation on that here.

在方法doInBackground中,您可以枚举varargs变量params,如下所示:

for(int i=0;i<params.length;i++){
    System.out.println(params[i]);
}

所以它基本上是doInBackground

范围内的字符串数组

答案 1 :(得分:4)

编译器将三个点...视为接收该对象的数组。在这种情况下StringVoid。传入的对象数量是数组的大小。

因此:

doInBackground("Hi", "Hello", "Bye")将创建一个长度为3的String数组。

答案 2 :(得分:2)

此概念称为 varargs 并解释here