Birinci hissə. SOURCE və CLASS növləri ilə annotasiyalar haqqında çox qısa yazdım. İkinci hissədə itməmək və bir az daha "yanlış başa düşməyə" başlamaq üçün oxumağa dəyər =) Burada mütləq bildiyiniz ən azı bir söz olacaq!
Onları ilk dəfə burada problemlər içində görəndə nədənsə fərq etmədim. Yaxşı, Override dayanır, IDEA tərəfindən yazılmışdır, buna görə də belə olmalıdır. Zaman keçdikcə hər şeyin daha dərin olduğunu anladım. Siz oxuyarkən annotasiyalar faydasız, lakin zəruri bir şey kimi görünür. Bilmirsən niyə belə edirlər. Düşünürəm ki, bir-iki məqalə oxudum, dedilər “necə də əladır ki, indi annotasiyalarımız var, hər şey belə sadələşib”. Ancaq əvvəllər necə olduğunu bilmirdim və indi daha asan olduğunu başa düşmürdüm. İndi bilirəm və sizə bir az danışmaq istəyirəm. 3 növ annotasiya var (Retention Policy):
Doğma - heç vaxt görülməmiş və istifadə edilməmişdir. Məncə, bu olduqca nadir annotasiyadır, çünki... kodu başqa bir "doğma" dildə işlətmək lazım olduqda istifadə edirlər. Mən ona aydın istinad tapmağa çalışdım, amma bacarmadım.
SuppressWarnings - tez-tez @SuppressWarnings("qeyd olunmamış") şəklində istifadə olunur. Xəbərdar olduğunuz xəbərdarlıqları yatırtmaq üçün istifadə olunur. Yuxarıdakı nümunə yoxlanılmamış növlərin yayımlanması ilə bağlı xəbərdarlıqları gizlədir. Yenə yalnız bu formada və istifadədə rastlaşmışam.
Yaradılmış - Tapşırıq məndən xsd fayllarından siniflər yaratmağı tələb edəndə indi rast gəldim. Bu 3 annotasiya kifayət qədər spesifikdir və çox güman ki, hazırda sizin üçün maraqlı deyil. Sonuncunu təsvir edəcəyəm.
Ləğv et - siz onu hər zaman istifadə edirsiniz və bu, çox faydalı bir iş görür. IDEA bunu etməsə, metodu ləğv edərkən səhv etmək asandır. Yazı səhvləri və ya sadəcə səhvlər var. Bu annotasiya ana sinifdəki metodun bizim (etiketli) metodumuzla eyni olmasını təmin edəcək. Bu bizə metodun ləğv ediləcəyinə və əlavə olunmayacağına zəmanət verir. Kodun refaktorinqi zamanı metod silinə və ya dəyişdirilə bilər. Yenə annotasiya sizə səhvi göstərəcək. Onsuz, metodumuz sadəcə tamamlanacaqdı.
Darıxdırıcı? Deyərdim ki, bəli, bu məqalədən çıxarmaq üçün çox faydalı bir şey yoxdur. İçindəki demək olar ki, hər şey (90%) istifadə etməyəcəyiniz və ya istifadə edəcəyiniz, lakin çox nadir hallarda istifadə edəcəyiniz bir şey haqqındadır. Qalan 10% salam və ilk baxışda faydasız olan Override annotasiyasının təsviridir. Yaxşı, məncə məqalənin ikinci hissəsi daha maraqlı olacaq. RUNTIME annotasiyaları olacaq və onlar real vaxt rejimində kodla qarşılıqlı əlaqədə olur və qara sehr yaradır. Annotasiyalar. İkinci hissə. Lombok.
- SOURCE – kompilyator annotasiyaları
- CLASS – annotasiyadan verilənlər bayt koduna yazılacaq, lakin əməliyyat zamanı mövcud olmayacaq. Yazırlar ki, standart kitabxanada bir çox annotasiya bu tipdən istifadə edir və indi geriyə uyğunluq səbəbindən onu saxlayırlar. Çox xüsusi tapşırıqlar üçün istifadə olunur.
- StackOverflow-da sual və cavab
- RUNTIME – ən populyar, kod işləyərkən istifadə olunur.
- java/lang/annotation/Native.class;
- java/lang/SuppressWarnings.class
- javax/annotation/Generated.class
- ,java/lang/Override.class
- com/sun/istack/internal/Nullable.class
- com/sun/istack/internal/NotNull.class
- com/sun/istack/internal/Interned.class
- Native – bu annotasiya altında dəyişən yerli koda istinad edə bilər;
- SuppressWarnings – kompilyatorun müxtəlif xəbərdarlıqlarını aradan qaldırır;
- Yaradılmış – yaradılan mənbə kodunu qeyd edir;
- Override – metodun ləğvini yoxlayır.
GO TO FULL VERSION