1

私のメソッドで呼び出しsuper.onCreateた(または他のメソッド)かどうかをAndroidがどのように検出するのか知りたいですonCreate

フラグを使用してActivity.classにフラグが表示されたと思いますが、boolean mCalled;この検出用かどうかはわかりません。もしそうなら、オーバーライドするスーパーメソッドがたくさんあるので混乱しますが、スーパーメソッドが呼び出されたかどうかを検出するためのそれらのメソッドの「mCalled」フラグは1つだけです。

返信のためのthx〜

4

1 に答える 1

3

パターンは次のように機能します。

private boolean superCalled;

private someFunction(...) {
    superCalled = false;
    someMethodThatRequiresSuperToBeCalled(...);
    if (!superCalled) {
        throw new SuperNotCalledException();
    }
}

protected void someMethodThatRequiresSuperToBeCalled(...) {
    superCalled = true;
}

コードを確認すると、フレームワークによって一度に1つのメソッドに対してのみフラグが使用されていることがわかります。したがって、の呼び出しを必要とするメソッドは多数ありますがsuper.whatever()、それらは同じフラグを共有できます。

于 2012-12-09T08:34:58.813 に答える