JavaRush /Java Blogu /Random-AZ /Annotasiyalar. Birinci hissə, bir az darıxdırıcı

Annotasiyalar. Birinci hissə, bir az darıxdırıcı

Qrupda dərc edilmişdir
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!
Annotasiyalar.  Birinci hissə, bir az darıxdırıcı - 1
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):
  • 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.
Məqalənin bir hissəsi giriş sözü ilə əhatə olunduğu üçün mən burada MƏNBƏ və SİNF annotasiyaları haqqında yazacam. Budur tapa bildiyim mücərrədlər (3607-ci məsələ sayəsində). Mən iş vaxtı haqqında yazmıram, onlardan çoxu var və bu məqalənin mövzusu deyil. MƏNBƏ:
  • java/lang/annotation/Native.class;
  • java/lang/SuppressWarnings.class
  • javax/annotation/Generated.class
  • ,java/lang/Override.class
SINIF: CLASS tipli annotasiyaların nə üçün lazım olduğunu bilmirəm. Mövcud annotasiyalar üçün sənədlər tapa bilmədim, ona görə də düşünürəm ki, bu baqajı geridə qoya bilərik. Amma tapan varsa paylaşsın. SOURCE annotasiyaları:
  1. Native – bu annotasiya altında dəyişən yerli koda istinad edə bilər;

  2. SuppressWarnings – kompilyatorun müxtəlif xəbərdarlıqlarını aradan qaldırır;

  3. Yaradılmış – yaradılan mənbə kodunu qeyd edir;

  4. Override – metodun ləğvini yoxlayır.
Daha ətraflı:
Annotasiyalar.  Birinci hissə, bir az darıxdırıcı - 2
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.
Annotasiyalar.  Birinci hissə, bir az darıxdırıcı - 3
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.
Annotasiyalar.  Birinci hissə, bir az darıxdırıcı - 4
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.
Annotasiyalar.  Birinci hissə, bir az darıxdırıcı - 5
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ı.
Annotasiyalar.  Birinci hissə, bir az darıxdırıcı - 6
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.
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION