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

may*_*ysi 5 java

例如,我有这样的代码:( 从这里)

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) {
      }
}
Run Code Online (Sandbox Code Playgroud)

方法参数中的3个点有什么作用?

Wil*_*son 8

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

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

关于这方面的文件.

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

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

所以它基本上是一个范围内的字符串数组 doInBackground

  • @Simon Yup.事实上,在运行时它只是一个数组,甚至不是一个特殊的数组.```的东西纯粹是编译时的语法糖.您甚至可以通过传递一个`String []`(或其他)而不是一堆`String`s来调用该方法,如答案所示. (2认同)