String
和String...
之间的区别是什么?Void
和Void...
之间的区别是什么?
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();
}
}
答案 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