在为android编程时,每当我使用AsyncTask时,doInBackground方法都将如下所示。
protected String doInBackground(String... args)
但是当在那个块中的任何地方使用参数时,我可以像在程序中一样使用普通的String数组来访问它们
@Override
protected String doInBackground(String... args)
{
String details = "";
try
{
details = facade.getRecipeDetails(args[0]);
}
catch(Exception ex)
{
ex.printStackTrace();
}
return details;
}
哪个工作正常,我没有问题。但是我想知道为什么他们使用(String。。。args)而不是普通的String数组。仅仅是因为在调用方法中您可以编写如下内容:
new AsyncHandler.execute("argument1","argument2","argument3",...)
而不是创建一个新的数组来传递参数?虽然我们可以写
new AsyncHandler().execute(new String[]{"Argument1","Argument2"});
这有点冗长。
(String ...)和String []在它们的工作方式上是否是同义词,但是使用参数前者更容易传递参数,因为无需创建数组?据我所知,前者还会在后台转换为字符串数组,因此它们是否都可以编译为相同的代码,而只是“语法糖”?
@FaizanRabbani,除了您也可以像称呼
—
棘手怪胎
String...
它一样String[]
@ratchetfreak是的,它可以充当a
—
FaizanRabbani 2014年
String[]
,但是让我们假设它是默认设置String[]
。String
在数组中使用不同的参数将是一个很大的问题。相反,它们提供了使用的灵活性(String ...)
。
@FaizanRabbani我知道它并不总是String,它只是一个示例=)。布尔...或其他东西也一样,但是由于我们熟悉的main(String [] args),我喜欢使用String。您说过“您可以传递任意数量的字符串”,那么您可以通过数组传递很多字符串。在我看来,尽管可读性差且麻烦多了,但似乎仍然可以使用数组实现相同的目的。(例如,传递数组的数组会稍微降低可读性)。那主要是为了可读性是正确的吗?(感谢已经顺便说一句)
—
Dylan Meeus 2014年
@FaizanRabbani好吧,这是
—
棘轮怪胎2014年
new String[]{...}
转换的简单包装(这是您使用时实际发生的事情String...
)
(String ...)
意味着您可以根据需要添加尽可能多的String
参数,这String[]
是一个参数,它是一个字符串数组。(String ...)
取决于的第一个参数AsyncTask
,并非总是这样String
。