Sobes.tech
Middle

Аннотатсияи @CallSuper барои чӣ аст?

sobes.tech AI

Ҷавоб аз AI

Эзоҳ @CallSuper истифода мешавад, ки нишон диҳад, ки усуле, ки навишта мешавад (дар зерсинф), бояд ҳатман иҷрои усули синфи болоиро даъват кунад.

Ин дар ҳолатҳои зерин муфид аст:

  • Ҳолати синфи боло: Синфи боло метавонад дар усули худ ҳолати муҳимро оғоз ё идора кунад. Даъвати @CallSuper кафолат медиҳад, ки ин ҳолат дар ҳар як татбиқ дар зерсинфҳо дуруст идора карда мешавад.
  • Манбаъҳо/Тозакунӣ: Синфи боло метавонад манбаъҳоро идора кунад ё амалҳои тозакунӣ дар усули худ иҷро кунад. @CallSuper кафолат медиҳад, ки ин амалҳо ҳатман иҷро шаванд, ҳатто агар усул навишта шавад.
  • Шартномаи рафтор: Анотация нишон медиҳад, ки татбиқи синфи боло қисми рафтори умумӣ мебошад, ки бояд дар зерсинфҳо нигоҳ дошта шавад.

Маслиҳат барои истифода:

public class BaseActivity extends AppCompatActivity {

    @Override
    @CallSuper // нишон медиҳад, ки onCreate() синфи боло бояд даъват шавад
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Инициализатсияи компонентҳои асосӣ
    }
}

public class MyActivity extends BaseActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); // Зарур аст, ки усули синфи боло даъват шавад
        // Инициализатсияи иловагӣ барои MyActivity
    }
}

Муҳим аст, ки қайд кардан, ки @CallSuper дастур барои воситаҳои таҳлили код (мисол, Lint) аст ва талаботи қатъӣ дар сатҳи компилятсия нест. Воситаҳо огоҳӣ медиҳанд, агар усуле, ки бо @CallSuper ишора шудааст, бе даъвати super() навишта шавад.