Должен ли я вызвать super() при переопределении конструктора AsyncTask?
Во многих примерах, которые я видел в Интернете, AsyncTask
расширяется, конструктор переопределяется, а super() не вызывается. Например, в этом ответе от hackbod:
static class Worker extends AsyncTask<URL, Integer, Long> {
MyActivity mActivity;
Worker(MyActivity activity) {
mActivity = activity;
}
[...]
}
новый конструктор не обращается к родительскому конструктору.
Здесь аналогичный код в этот примерный проект от CommonsWare.
Итак, это правильно? Или нужно super()
называть?
Ответы
Ответ 1
Супер конструктор по умолчанию называется неявным, если super() не вызывается явно. Так что на самом деле нет никакой разницы. Я бы использовал более короткую версию (omit super()), которая, как представляется, является обычной практикой в Java.
p.s. См. Также эту тему: Конструкторы и наследование по умолчанию в Java