在覆盖AsyncTask的构造函数时,我应该调用super()吗?

时间:2012-06-17 21:27:11

标签: android android-asynctask override

在我看过的很多例子中,AsyncTask被扩展,构造函数被覆盖,而super()没有被调用。例如,在this answer by hackbod:

static class Worker extends AsyncTask<URL, Integer, Long> {
    MyActivity mActivity;

    Worker(MyActivity activity) {
        mActivity = activity;
    }

    [...]

}

新的构造函数不会回调父的构造函数。

CommonsWare在this sample project中有类似的代码。

这是正确的吗?或者应该super()真的被召唤?

1 个答案:

答案 0 :(得分:18)

如果未明确调用super(),则会隐式调用默认的超级构造函数。所以根本没有什么区别。我会使用较短的版本(省略super()),这似乎是Java中的常见做法。

P.S。另请参见此主题:Default constructors and inheritance in Java