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() навишта шавад.