класс Void в AsyncTask
Начал изучать AsyncTask, в одном из уроков увидел следующий код:
class MyTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
tvInfo.setText("Begin");
}
@Override
protected Void doInBackground(Void... params) {
try {
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
tvInfo.setText("End");
}
}
Что за класс Void (с большой буквы), для чего он нужен и почему нельзя использовать обычный void?
Ответы (1 шт):
Автор решения: ЮрийСПб
→ Ссылка
Void - это "непримитивный аналог" void. Нужен для использования в параметризованных классах, т.к. параметром может быть только класс, а примитив быть параметром не может.
Вы можете смело использовать Void вместо void, также как, например Integer вместо int. Однако, в этом случае надо будет удовлетворять требования компилятора. Например для void методов return можно опустить, а вот для Void методов надо явно его прописать. Вот пример:
public class HelloWorld {
public static void main(String[] args) {
test();
test1();
}
public static Void test() {
System.out.println("Hello World");
return null;
}
public static void test1() {
System.out.println("Hello World");
}
}
И вот ещё пара ссылок: