Sobes.tech
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 @CallSuper garante 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. @CallSuper garante 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().