LOMBOK

LOMBOK



Java -ya sevgimiz sonsuzdur (❤), amma kod kutlesi baximindan agir ve goz yorucudur. Adice encapsulate get/set metodlari, konstrukturlar ozleri ve.s bunlar uzun uzadi yazmaq yerine, vaxt itirmek yerine annotasiyalar ile bunu bizim evezimize kimse etseydi backgroundda yaxsi olmazdimi ? Lombok bu isde bize komekci olur :


Meselem asagidaki annotasiyalar ile hetta izah vermesem de ozunuz basa duseceksiniz ki ne ucundur ( bezilerine ise izaha ehtiyaci var ) :
@Getter / @Setter ( hem class uzerine hem ayri ayri fieldler uzerinde qeyd ede bilersiz ) @Accessors(fluent = true, chain = true) — fluent eger true olsa get ve set sozunu elave etmir metod name-e , chain true olduqda ise elave obyektin ozunu de sonda qaytaran metodlar elave edilir.
@NonNull — required fieldleri gostermek ucun
@Builder — bizim evezimize builder class yaradir.Ancaq mueyyen fieldler ucun builder yaranmasini isteyirikse hemin parametrlerden ibaret constructir yaradib onun uzerine verile de biler class level evezine.@Builder.Default ile default value de ver ebilerik fieldere.
@NoArgsConstructor (default parametrsiz konstruktor yaradir)
@RequiredArgsConstructor (@NonNull ve final fieldler ucun yaradir)
@AllArgsConstructor(butun fieldlerden ibaret konstruktor yaradir)
@AllArgsConstructor(staticName=”of”) (static factory metod yaradir sizin evezinize , yeni evvelce private constructor ve verdiyiniz name-e gore “of” adinda static metod yaradir)
@NoArgsConstructor(staticName=”of”) — da uygun olaraq static factory metod yaradir sadece no args private constructor ile
@RequiredArgsConstructor(staticName=”of”)
*** Bir seyi yadda saxlayin ki, Lombok super class-in paremetrli constructorunu super() ile cagira bilmir, auto generate etmir. Java-da da bilirik ki subclass constructor daxilinde cagrilir biz yazmasaq bele implicitly cagrilir. Bele olan halda extend etdiyi class-in parametrli konstruktoru super call ile generate olunmayacaq buna diqqet edin!
@ToString ( butun none static fieldleri ucun out verecek, ve vergul “,” ile ayiracaq butun fieldleri)
@ToString(exclude = {“name”, “surname”}) Bucur formada vererek bezi fielderi skip ede bilersiz toString ucun ve ya eyni seyi her exclude olunan field ucun @ToString.Exclude uzerine yazaraq da ede bielrsiz. Ve ya ancaq hansilar ucun tostring yaradilmasini gostermek ucun @ToString(onlyExplicitlyIncluded = true) elave edib class-a ve her istfade edilmesi istenilen field uzerine @ToString(onlyExplicitlyIncluded = true) elave ede bilersiz.Ve ya mene gore en elegant way asagidaki kimidir include fieldleri gostermek ucun sadece class uzerine bele yaziriq @ToString(of = {“name”, “surname”})
@ToString.Include -ni hanisa boolean qatar metod uzerine yazib mueyyen sert olduqda da ancaq generate etmesini temin ede bielrsiniz toStringin
@ToString(callSuper = true) — super class tosttring + subclass tostring cagrilmasi ucun bucur true etmek lazimdir
Eger generate zamani fieldName yox ancaq fieldValueler ekrana verilmesinistenirse asagidaki kimi edilmelidir:
@ToString(includeFieldNames = false)
*** Eger ToString istifade edilmis obyektin referansi basqa ToString ile classda istifade edilse recursiya yarana ve StackOverflow error vere biler buna gore exclude etmeyi unutmayin hemin obyekt referansini.
@EqualsAndHasCode — yaradarken none static ve none transient fieldlerden istiafde edir. @EqualsAndHashCode.Exclude da istfde ede bilersiz skip ucun.
@Data = @Getter + @Setter + @RequiredArgsConstructor + @ToString + @EqualsAndHashCode.
@Value— @Data ile eyni seyi edir ama generate etdiyi class immutable class olur, yeniki siz final yazmasaz bele class-iniz final olur, private final fieldler yaranir.@NonFinal ile istediyinizi final etmemesini de deye bielrsiz.
@cleanup — duzdur artiq javada try with resources var ve istifade edilen resource sonda close olur amma daha evvelki versiyalar ucun bu annotasoya istfde etmek olar close etmesi ucun sonda resource-u
@SneakyThrows — cagirdiginiz metod daixlinde checked exception throw edilrise ve ehtimali varsa try catch ve ya methoda throw elave etmek evezine metod uzerinde @SneakyThrows(InterruptedException.class) meselem yazasaz ozu sizin evezinize bunu edir lombok.

Yorumlar

Bu blogdaki popüler yayınlar

INGILIS DILI BUTUN ZAMANLAR

İNGİLİS DİLİNDƏ ƏN ÇOX İSTİFADƏ OLUNAN 2600 CÜMLƏ QƏLİBLƏRİ VƏ 6000 SÖZ