doInBackground AsyncTask (параметры параметров)

Я не знаком с синтаксисом параметра в doInBackground(Params... params)

Как называется такая штука и как ее использовать?


person dfetter88    schedule 14.06.2011    source источник
comment
Это поможет вам лучше понять, как работают параметры: developer.android.com /reference/android/os/AsyncTask.html   -  person dymmeh    schedule 14.06.2011
comment
Прочитайте полное описание здесь: stackoverflow.com/questions/6053602/   -  person Kartik Domadiya    schedule 14.06.2011


Ответы (3)


Как сказали devA и 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(), если используете varargs.

person Travis    schedule 14.06.2011
comment
@Travis Как указать, что аргументы не передаются? Вы должны выбрать случайный тип? - person David Doria; 17.09.2013
comment
Чтобы указать, что никакие аргументы не должны передаваться, сигнатура вашего метода не будет включать никаких параметров, поэтому там, где выше вы видите public void makeLemonade(String... args), вместо этого вы должны использовать public void makeLemonade(). Это сообщает компилятору, что никакие аргументы не допускаются. Если бы вы хотели вызвать метод с 0 аргументами, что вполне допустимо, вы бы сделали именно это и вызвали makeLemonade(). - person Travis; 18.09.2013

Они называются Var Args.. Точно так же, как массив.. U может передавать несколько элементов и просто получать доступ, например params[0].. и т. д..

person ngesh    schedule 14.06.2011

Params... params представляет собой vararg. Он был добавлен в J2SE5.0. Это означает, что вы можете передать любое количество аргументов или указать массив аргументов params[0]

Спасибо, Дипак.

person Sunil Kumar Sahoo    schedule 14.06.2011