Sobes.tech
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 @CallSuper stellt 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. @CallSuper stellt 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.