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í
@CallSuperzajišť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ě.
@CallSuperzajišť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().