Middle
Para que serve a anotação @CallSuper?
sobes.tech IA
Resposta da IA
A anotação @CallSuper é usada para indicar que o método sobrescrito (na subclasse) deve obrigatoriamente chamar a implementação do método da superclasse.
Isto é útil nos seguintes casos:
- Estado da superclasse: A superclasse pode inicializar ou gerir um estado importante no seu método. A chamada a
@CallSupergarante que este estado será corretamente tratado em qualquer implementação nas subclasses. - Recursos/Limpeza: A superclasse pode gerir recursos ou realizar ações de limpeza no seu método.
@CallSupergarante que estas ações serão realizadas mesmo quando o método for sobrescrito. - Contrato de comportamento: A anotação indica um contrato, que a implementação da superclasse faz parte do comportamento geral que deve ser mantido nas subclasses.
Exemplo de uso:
public class BaseActivity extends AppCompatActivity {
@Override
@CallSuper // Indica que onCreate() da superclasse deve ser chamado
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Inicialização de componentes básicos
}
}
public class MyActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); // Chamada obrigatória do método da superclasse
// Inicialização adicional para MyActivity
}
}
É importante notar que @CallSuper é uma instrução para as ferramentas de análise de código (como Lint), e não uma exigência obrigatória a nível de compilação. As ferramentas emitir-ão um aviso se um método marcado com @CallSuper for sobrescrito sem chamar super().