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"); } 

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

Заранее спасибо!

Android AsyncTask – это общий тип.

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

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

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

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

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

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

для

 public void met(String...a) 

Вы можете вызвать этот метод

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

и так далее.

Вы можете больше узнать об этом ЗДЕСЬ.

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

 type ... variableName 

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

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

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

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

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

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

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