Должен ли я вызвать 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