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
@CallSuperzabezpeč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.
@CallSuperzabezpeč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().