Sobes.tech
Middle

Na co je anotace @CallSuper?

sobes.tech AI

Odpověď od AI

Poznámka @CallSuper se používá k označení, že přepsaná metoda (v podtřídě) musí povinně zavolat implementaci metody nadtřídy.

To je užitečné v následujících případech:

  • Stav nadtřídy: Nadtřída může inicializovat nebo spravovat důležitý stav ve své metodě. Volání @CallSuper zajišťuje, že tento stav bude správně zpracován v jakékoli implementaci v podtřídách.
  • Zdroje/Čištění: Nadtřída může spravovat zdroje nebo provádět akce čištění ve své metodě. @CallSuper zajišťuje, že tyto akce budou provedeny i při přepsání metody.
  • Smlouva o chování: Anotace označuje smlouvu, že implementace nadtřídy je součástí celkového chování, které musí být zachováno v podtřídách.

Příklad použití:

public class BaseActivity extends AppCompatActivity {

    @Override
    @CallSuper // Ukazuje, že onCreate() nadtřídy musí být voláno
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Inicializace základních komponent
    }
}

public class MyActivity extends BaseActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); // Povinné volání metody nadtřídy
        // Další inicializace pro MyActivity
    }
}

Je důležité poznamenat, že @CallSuper je instrukce pro nástroje analýzy kódu (například Lint) a není přísnou požadavkem na úrovni kompilace. Nástroje vydají varování, pokud je metoda označená @CallSuper přepsána bez volání super().