Sobes.tech
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 @CallSuper hí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 @CallSuper biztosí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.