Middle
Waarvoor is de annotatie @CallSuper nodig?
sobes.tech AI
Antwoord van AI
De annotatie @CallSuper wordt gebruikt om aan te geven dat de overschreven methode (in de subklasse) verplicht de implementatie van de methode van de superklasse moet aanroepen.
Dit is nuttig in de volgende gevallen:
- Toestand van de superklasse: De superklasse kan een belangrijke toestand initialiseren of beheren in haar methode. Het aanroepen van
@CallSupergarandeert dat deze toestand correct wordt afgehandeld in elke implementatie in subklassen. - Resources/Opruiming: De superklasse kan resources beheren of opruimacties uitvoeren in haar methode.
@CallSupergarandeert dat deze acties worden uitgevoerd, zelfs bij overschrijving van de methode. - Gedragscontract: De annotatie geeft aan dat de implementatie van de superklasse deel uitmaakt van het algemene gedrag dat in subklassen moet worden behouden.
Voorbeeld van gebruik:
public class BaseActivity extends AppCompatActivity {
@Override
@CallSuper // Geeft aan dat onCreate() van de superklasse moet worden aangeroepen
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Initialisatie van basiselementen
}
}
public class MyActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); // Verplichte aanroep van de superklasse-methode
// Aanvullende initialisatie voor MyActivity
}
}
Het is belangrijk op te merken dat @CallSuper een instructie is voor code-analysetools (zoals Lint) en geen strikte vereiste op compilatieniveau. De tools geven een waarschuwing als een met @CallSuper gemarkeerde methode wordt overschreven zonder super() aan te roepen.