Sobes.tech
Middle

À quoi sert l'annotation @CallSuper?

sobes.tech IA

Réponse de l'IA

L'annotation @CallSuper est utilisée pour indiquer que la méthode surchargée (dans la sous-classe) doit obligatoirement appeler l'implémentation de la méthode de la super-classe.

Ceci est utile dans les cas suivants :

  • État de la super-classe : La super-classe peut initialiser ou gérer un état important dans sa méthode. L'appel à @CallSuper garantit que cet état sera correctement géré dans toute implémentation dans les sous-classes.
  • Ressources/Nettoyage : La super-classe peut gérer des ressources ou effectuer des actions de nettoyage dans sa méthode. @CallSuper garantit que ces actions seront effectuées même si la méthode est surchargée.
  • Contrat de comportement : L'annotation indique un contrat, selon lequel l'implémentation de la super-classe fait partie du comportement général qui doit être conservé dans les sous-classes.

Exemple d'utilisation :

public class BaseActivity extends AppCompatActivity {

    @Override
    @CallSuper // Indique que onCreate() de la super-classe doit être appelé
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Initialisation des composants de base
    }
}

public class MyActivity extends BaseActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); // Appel obligatoire de la méthode de la super-classe
        // Initialisation supplémentaire pour MyActivity
    }
}

Il est important de noter que @CallSuper est une instruction pour les outils d'analyse de code (comme Lint), et non une exigence stricte au niveau de la compilation. Les outils émettront un avertissement si une méthode marquée avec @CallSuper est surchargée sans appeler super().