Middle
Wozu dient die Annotation @CallSuper?
sobes.tech KI
Antwort von AI
Die Annotation @CallSuper wird verwendet, um anzugeben, dass die überschreibende Methode (in der Unterklasse) unbedingt die Implementierung der Methode der Oberklasse aufrufen muss.
Dies ist in folgenden Fällen nützlich:
- Zustand der Oberklasse: Die Oberklasse kann in ihrer Methode einen wichtigen Zustand initialisieren oder verwalten. Der Aufruf von
@CallSuperstellt sicher, dass dieser Zustand bei jeder Implementierung in Unterklassen korrekt behandelt wird. - Ressourcen/Bereinigung: Die Oberklasse kann Ressourcen verwalten oder Bereinigungsaktionen in ihrer Methode durchführen.
@CallSuperstellt sicher, dass diese Aktionen auch bei Überschreibungen ausgeführt werden. - Verhaltensvertrag: Die Annotation gibt einen Vertrag an, dass die Implementierung der Oberklasse Teil des allgemeinen Verhaltens ist, das in den Unterklassen beibehalten werden muss.
Beispiel für die Verwendung:
public class BaseActivity extends AppCompatActivity {
@Override
@CallSuper // Gibt an, dass onCreate() der Oberklasse aufgerufen werden muss
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Initialisierung der Basiskomponenten
}
}
public class MyActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); // Obligatorischer Aufruf der Oberklassenmethode
// Zusätzliche Initialisierung für MyActivity
}
}
Es ist wichtig zu beachten, dass @CallSuper eine Anweisung für Code-Analysetools (wie Lint) ist und keine zwingende Anforderung auf Kompilierungsebene darstellt. Die Tools geben eine Warnung aus, wenn eine mit @CallSuper markierte Methode ohne Aufruf von super() überschrieben wird.