Sobes.tech
Middle

Na čo je anotácia @CallSuper?

sobes.tech AI

Odpoveď od AI

Poznámka @CallSuper sa používa na označenie, že prepísaná metóda (v podtriede) musí povinne zavolať implementáciu metódy nadtriedy.

Toto je užitočné v nasledujúcich prípadoch:

  • Stav nadtriedy: Nadtrieda môže inicializovať alebo spravovať dôležitý stav vo svojej metóde. Volanie @CallSuper zabezpečuje, že tento stav bude správne spracovaný v akejkoľvek implementácii v podtriedach.
  • Zdroje/Čistenie: Nadtrieda môže spravovať zdroje alebo vykonávať akcie čistenia vo svojej metóde. @CallSuper zabezpečuje, že tieto akcie budú vykonané aj pri prepísaní metódy.
  • Zmluva o správaní: Anotácia označuje zmluvu, že implementácia nadtriedy je súčasťou všeobecného správania, ktoré musí byť zachované v podtriedach.

Príklad použitia:

public class BaseActivity extends AppCompatActivity {

    @Override
    @CallSuper // Ukazuje, že onCreate() nadtriedy musí byť volané
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Inicializácia základných komponentov
    }
}

public class MyActivity extends BaseActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); // Povinné volanie metódy nadtriedy
        // Dodatočná inicializácia pre MyActivity
    }
}

Dôležité je poznamenať, že @CallSuper je inštrukcia pre nástroje na analýzu kódu (napríklad Lint) a nie prísna požiadavka na úrovni kompilácie. Nástroje vydajú varovanie, ak metóda označená @CallSuper bude prepísaná bez volania super().