Intereting Posts
Создает дубликат поля ввода, когда он сфокусирован на веб-обозревателе Android 4.0, используя jQuery mobile и phonegap Как получить текущее местоположение башни от оператора сети на Android Android-устройство GPS вкл. / Выкл. Программно Java.lang.NoSuchMethodError: нет виртуального метода zzait () Ljava / util / ArrayList; В классе Lcom / Error? Не удалось проанализировать XML-файл для Android Android – отображение ExoPlayer в круге Фрагмент становится видимым Async / ожидание не реагирует так, как ожидалось Как читать из сокета, используя datainputstream Ложные срабатывания: junit.framework.AssertionFailedError: EditText не найден Firebase Cloud Messaging проблема с подпиской // отписаться от темы Android делает снимок экрана на корневом устройстве Как мне структурировать мой проект для совместного использования классов между клиентским приложением Android и приложением JSP-сервера? Проблема обнаружения жестов и ScrollView Как найти температуру города по долготе и широте в андроиде?

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 или ранее).

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