2011-06-14 86 views
22

我不熟悉的doInBackground(Params... params)的AsyncTask的doInBackground(参数... PARAMS)

这是什么类型的东西叫做参数语法,以及如何利用它?

+2

这会给你一个更好地了解如何PARAMS工作:HTTP://开发商。 android.com/reference/android/os/AsyncTask.html – dymmeh 2011-06-14 11:59:28

+0

请阅读此处的完整说明:http://stackoverflow.com/questions/6053602/what-arguments-are-passed-into-asynctaskarg1-arg2-arg3/6053673# 6053673 – 2011-06-14 12:12:59

回答

55

由于德瓦和VVV说,被称为“可变参数”。实际上,下面的代码两行是等价的:

public void makeLemonade(String[] args) { 

public void makeLemonade(String... args) { 

方法里面的代码是相同的,但是当它被称为,它们会受到不同调用。第一个需要这样调用:

makeLemonade(new String[]{"lemon1", "lemon2", "lemon3"}); 

,而第二个的方法签名可以有0到的参数(假设)无限多,但他们都必须是字符串参数。以下所有通话将工作:

makeLemonade("lemon1"); 
makeLemonade("lemon4", "lemon7", "lemon11", "lemon12"); 
makeLemonade(); 
// ... etc ... 

两者之间的细微差别是,你可以,如果你使用的可变参数调用makeLemonade()依法这里。

+4

完美的解释。谢谢。 – dfetter88 2011-06-14 13:02:19

+0

@Travis你如何表示不需要传递参数?你必须选择一个随机类型? – 2013-09-17 15:24:07

+0

为了表明没有参数要传递,你的方法签名将不包含任何参数,所以在上面你看到“public void makeLemonade(String ... args)”,你会改用“public void makeLemonade()” 。这告诉编译器不允许任何参数。如果你想用0个参数调用这个方法,那是完全有效的,你可以这样做,然后调用“makeLemonade()”。 – Travis 2013-09-18 18:38:55

3

他们被称为变参..就像一个数组.. U可以将多个项目,只是访问诸如params[0]。等等。

1

Params... params代表可变参数。它是在J2SE5.0中添加的。 这意味着你可以传递任何数量的参数,或者你可以说参数则params的数组[0]

感谢 迪帕克

相关问题