Middle
Do czego służy adnotacja @CallSuper?
sobes.tech AI
Odpowiedź od AI
Adnotacja @CallSuper jest używana do wskazania, że nadpisana metoda (w podklasie) musi obowiązkowo wywołać implementację metody nadklasy.
Jest to przydatne w następujących przypadkach:
- Stan nadklasy: Nadklasa może inicjalizować lub zarządzać ważnym stanem w swojej metodzie. Wywołanie
@CallSupergwarantuje, że ten stan będzie poprawnie obsłużony w każdej implementacji w podklasach. - Zasoby/oczyszczanie: Nadklasa może zarządzać zasobami lub wykonywać działania związane z czyszczeniem w swojej metodzie.
@CallSupergwarantuje, że te działania będą wykonane nawet przy nadpisywaniu metody. - Kontrakt zachowania: Adnotacja wskazuje na kontrakt, że implementacja nadklasy jest częścią ogólnego zachowania, które musi być zachowane w podklasach.
Przykład użycia:
public class BaseActivity extends AppCompatActivity {
@Override
@CallSuper // Wskazuje, że onCreate() nadklasy musi być wywołane
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Inicjalizacja podstawowych komponentów
}
}
public class MyActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); // Obowiązkowe wywołanie metody nadklasy
// Dodatkowa inicjalizacja dla MyActivity
}
}
Ważne jest, aby zauważyć, że @CallSuper jest instrukcją dla narzędzi analizy kodu (takich jak Lint), a nie obowiązkowym wymogiem na poziomie kompilacji. Narzędzia będą wyświetlać ostrzeżenie, jeśli metoda oznaczona @CallSuper zostanie nadpisana bez wywołania super().