Void... значение параметра в описании функции java

Недавно я наткнулся на фрагмент java. Определения функций имеют другой формат, чем я знаю до сих пор. Ниже приведены коды -

  protected Void doInBackground(String... params) {
        Log.i(TAG, "doInBackground");
        //Invoke web method 'PopulateCountries' with dummy value
        invokeJSONWS("dummy","PopulateCountries");
        return null;
    }

и аналогичная функция с ... в параметре

protected void onProgressUpdate(Void... values) {
        Log.i(TAG, "onProgressUpdate");
    }

Что означает ... в следующем контексте.

Спасибо заранее!

Ответ 1

Android AsyncTask - общий тип.

Если вам нужна задача async, которая не имеет смысла промежуточных данных прогресса, вы должны объявить ее как MyTask extends AsyncTask<Something, Void, Something> с использованием класса Void в качестве спецификации переменной типа Progress и, следуя обычным общим правилам, если вы решите перезаписать onProgressUpdate, вам придется объявить его как onProgressUpdate(Void... values).

Следовательно, Void... не означает ничего, кроме обычного метода vararg, тип которого оказался Void.

Ответ 2

Что означает... означает в следующем контексте.

Это указывает аргумент переменной длины, если вы хотите вызвать метод с параметрами типа say String, но вы не знаете, сколько параметров вы хотите передать, можете использовать это.

поскольку вы можете передать любое число String в метод.

Итак, вы можете вызвать метод, как эти способы.

для

public void met(String...a)

этот метод можно вызвать с помощью

ob.met()
ob.met("a")
ob.met("a","b")

и т.д.

Подробнее об этом можно узнать ЗДЕСЬ.

Ответ 3

он называется varargs, а это означает произвольное число параметров того же типа. Вы можете получить к нему доступ на основе индекса, например массив.

Ответ 4

type ... variableName

ellipsis (...) идентифицирует переменное количество аргументов и демонстрируется в следующем методе суммирования.

static int sum (int ... numbers)
{
   int total = 0;
   for (int i = 0; i < numbers.length; i++)
        total += numbers [i];
   return total;
}

Ответ 5

Существуют необязательные параметры с Java 5.0. Просто объявите свою функцию следующим образом:

public void doSomething(boolean...optionalFlag) {
    ...
}

вы можете позвонить с помощью doSomething() или doSomething(true).

Это "новое" в Java 1.5 и выше (не поддерживается в Java 1.4 или ранее).

Ответ 6

это аргументы переменной длины