String ...和Void ...关键字是什么意思?

时间:2011-07-28 17:12:14

标签: java android

StringString...之间的区别是什么?VoidVoid...之间的区别是什么?

class AddStringsTask extends AsyncTask<Void, String, Void>{

        @Override
        protected Void doInBackground(Void... unused) {
            for (String item: items){
                publishProgress(item);
                SystemClock.sleep(200);
            }
            return(null);
        }

        @Override
        protected void onProgressUpdate(String... item){
            ((ArrayAdapter)getListAdapter()).add(item[0]);
        }

        @Override
        protected void onPostExecute(Void unused){
            Toast.makeText(Cap15Asyncer.this,"Completed!" , Toast.LENGTH_SHORT).show();
        }   
    }   

4 个答案:

答案 0 :(得分:7)

这意味着函数调用中可能存在可变数量的String个参数,它被称为varargs

答案 1 :(得分:3)

方法

protected void onProgressUpdate(String... item){
    ((ArrayAdapter)getListAdapter()).add(item[0]);
}

String... item表示该方法采用任意数量的字符串(包括0个字符串)。因此,可以使用任意数量的字符串作为输入调用此方法,并将它们全部添加到listAdapter,就像数组一样。如果方法是:

protected void onProgressUpdate(String item){
    ((ArrayAdapter)getListAdapter()).add(item);
}

然后它只需要一个String,(注意add方法已相应更改)。

答案 2 :(得分:1)

正如您提到的void,我会假设您询问方法的返回类型。 void表示调用时不会返回值,string表示将从您的方法返回一种字符串。

返回类型明确告诉调用对象哪种数据不仅可以返回,而且还可以获得保证。

答案 3 :(得分:-1)

考虑您的代码

kprotected Void doInBackground(Void... unused) {             
for (String item: items){        
  publishProgress(item);                
 SystemClock.sleep(200);          
   } 

Void意味着没有回报 然而,这将返回一些东西

kprotected something doInBackground(<your parameters here>){
//do your work    
return something
}

字符串是存储为文本的东西。 您的案例在项目中存储为string的每个项目。(更大的图片)将完成工作。

修改

当使用String...传递多个参数时,如使用{{1}}自动执行多个参数的过程。注意它是如何在最后一个方法中使用的。

是的,如另一个答案所述,这是Varargs