11

私がオンラインで見た多くの例でAsyncTaskは、拡張され、コンストラクターがオーバーライドされ、super()は呼び出されません。たとえば、hackbodによるこの回答では次のようになります。

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

    Worker(MyActivity activity) {
        mActivity = activity;
    }

    [...]

}

新しいコンストラクターは、親のコンストラクターを呼び出しません。

CommonsWareによるこのサンプルプロジェクトにも同様のコードがあります。

それで、これは正しいですか?それともsuper()本当に呼ばれるべきですか?

4

1 に答える 1

18

super()が明示的に呼び出されない場合、デフォルトのスーパーコンストラクターが暗黙的に呼び出されます。したがって、実際にはまったく違いはありません。短いバージョン(omit super())を使用します。これは、Javaでは一般的な方法のようです。

psこのスレッドも参照してください:Javaのデフォルトコンストラクタと継承

于 2012-06-17T21:42:16.223 に答える