Middle
A cosa serve l'annotazione @CallSuper?
sobes.tech AI
Risposta dell'AI
L'annotazione @CallSuper viene utilizzata per indicare che il metodo sovrascritto (nella sottoclasse) deve chiamare obbligatoriamente l'implementazione del metodo della superclasse.
Questo è utile nei seguenti casi:
- Stato della superclasse: La superclasse può inizializzare o gestire uno stato importante nel suo metodo. La chiamata a
@CallSupergarantisce che questo stato venga gestito correttamente in qualsiasi implementazione nelle sottoclassi. - Risorse/Pulizia: La superclasse può gestire risorse o eseguire azioni di pulizia nel suo metodo.
@CallSupergarantisce che queste azioni vengano eseguite anche quando il metodo viene sovrascritto. - Contratto di comportamento: L'annotazione indica un contratto, secondo cui l'implementazione della superclasse fa parte del comportamento generale che deve essere mantenuto nelle sottoclassi.
Esempio di utilizzo:
public class BaseActivity extends AppCompatActivity {
@Override
@CallSuper // Indica che onCreate() della superclasse deve essere chiamato
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Inizializzazione dei componenti di base
}
}
public class MyActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); // Chiamata obbligatoria al metodo della superclasse
// Inizializzazione aggiuntiva per MyActivity
}
}
È importante notare che @CallSuper è un'istruzione per gli strumenti di analisi del codice (come Lint), e non un requisito stringente a livello di compilazione. Gli strumenti emetteranno un avviso se un metodo contrassegnato con @CallSuper viene sovrascritto senza chiamare super().