Middle
Mit jelent az @CallSuper annotáció?
sobes.tech MI
Válasz az MI-től
A @CallSuper annotációt arra használják, hogy jelezzék, hogy a felülírt metódusnak (az alosztályban) kötelezően hívnia kell a szuperosztály metódusának implementációját.
Ez akkor hasznos, ha:
- A szuperosztály állapota: A szuperosztály inicializálhat vagy kezelhet fontos állapotokat a saját metódusában. A
@CallSuperhívás garantálja, hogy ez az állapot helyesen legyen kezelve minden alosztályban. - Erőforrások/Tisztítás: A szuperosztály kezelhet erőforrásokat vagy végezhet tisztítási műveleteket a saját metódusában. A
@CallSuperbiztosítja, hogy ezek a műveletek végrehajtódjanak, még akkor is, ha a metódus felül van írva. - Viselkedési szerződés: A megjegyzés azt jelzi, hogy a szuperosztály implementációja része az általános viselkedésnek, amit az alosztályoknak meg kell tartaniuk.
Használati példa:
public class BaseActivity extends AppCompatActivity {
@Override
@CallSuper // Jelzi, hogy az onCreate() szuperosztályból hívandó
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Alapvető komponensek inicializálása
}
}
public class MyActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); // Kötelező szupermetódus hívás
// További inicializálás a MyActivity számára
}
}
Fontos megjegyezni, hogy a @CallSuper egy utasítás a kód elemző eszközök (például Lint) számára, és nem kötelező követelmény a fordító szintjén. Az eszközök figyelmeztetést adnak, ha egy @CallSuper-rel megjelölt metódust felülírnak anélkül, hogy meghívnák a super()-t.