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
это аргументы переменной длины