AsyncTask的doInBackground(Params ... params)

dfe*_*r88 22 parameters syntax android android-asynctask

我不熟悉参数语法 doInBackground(Params... params)

什么是这种类型的东西,我该如何利用它?

Tra*_*vis 58

正如devA和VVV所说,这被称为"varargs".实际上,以下两行代码是等效的:

public void makeLemonade(String[] args) {
Run Code Online (Sandbox Code Playgroud)

public void makeLemonade(String... args) {
Run Code Online (Sandbox Code Playgroud)

方法中的代码将是相同的,但是当它被调用时,它们将被不同地调用.第一个需要像这样调用:

makeLemonade(new String[]{"lemon1", "lemon2", "lemon3"});
Run Code Online (Sandbox Code Playgroud)

而第二个方法签名可能有0到(假定的)无限数量的参数,但它们都需要是String参数.所有以下调用都可以:

makeLemonade("lemon1");
makeLemonade("lemon4", "lemon7", "lemon11", "lemon12"); 
makeLemonade();
// ... etc ...
Run Code Online (Sandbox Code Playgroud)

两者之间的细微差别在于,如果你使用的是varargs,你可以在这里合法地调用makeLemonade().