Lombok graditelj s prilagođenim postavljačem
1. Uvod
Project Lombok je popularna Java knjižnica koja pomaže smanjiti količinu osnovnog koda koji programer treba napisati.
U ovom uputstvu ćemo pogledati kako Lombok @Graditelj napomena funkcionira i kako je možemo prilagoditi svojim specifičnim potrebama.
2. Ovisnost Mavena
Počnimo dodavanjem ovisnosti na našu pom.xml:
org.projectlombok lombok 1.18.10
3. Lombok Graditelj Bilješka
Prije nego što proučimo prilagođavanje generirane klase graditelja Lomboka, napravimo kratki osvrt na to kako Lombok @Graditelj anotacija radi. Već imamo cjelovit uvod u Lombokove značajke.
The @Graditelj anotacija se može koristiti za automatsko generiranje graditelja za našu klasu. Za naš primjer koristit ćemo sustav razmjene poruka u kojem jedan korisnik može poslati poruku drugom korisniku. Poruka je ili jednostavni tekstualni niz ili Datoteka. Pomoću Lomboka možemo definirati svoj Poruka razred kako slijedi:
@Builder @Data javna klasa Message {private String sender; privatni primatelj niza; privatni tekst niza; privatna datoteka; }
@Podaci generira sve uzorke koji su obično povezani s jednostavnim POJO (obični stari Java objekt): getteri za sva polja, setteri za sva ne-konačna polja i prikladno toString, jednako i hashCode implementacije i konstruktor.
Pomoću generiranog graditelja sada možemo generirati svoje primjere Poruka razred:
Poruka poruke = Message.builder () .sender ("[email protected]") .recipient ("[email protected]") .text ("Kako ste danas?") .Build ();
The @Graditelj napomena također podržava zadane vrijednosti za atribute, ali o tome nećemo sada. Iz ovog primjera mora biti jasno da @Graditelj napomena je prilično moćna i može zamijeniti puno koda.
4. Prilagođavanje Lombok graditelja
Prethodni je odjeljak pokazao kako možemo koristiti Lombok za generiranje graditeljske klase. No, možda postoje slučajevi kada generirani graditelj nije dovoljan. U našem primjeru imamo ograničenje da poruka može sadržavati samo tekst ili datoteku. Ne može imati oboje. Lombok to naravno ne zna i generirani graditelj sa zadovoljstvom će nam dopustiti da uđemo u to ilegalno stanje.
Srećom možemo riješiti ovaj problem prilagođavanjem graditelja.
Prilagođavanje Lombok graditelja jednostavno je i jednostavno: napišemo dijelove graditelja koje želimo prilagoditi i Lombok @Graditelj anotacija jednostavno neće generirati te dijelove. Dakle, u našem primjeru to bi bilo:
javna statička klasa MessageBuilder {privatni tekst niza; privatna datoteka; javni tekst MessageBuilder (tekst niza) {this.text = text; verifyTextOrFile (); vrati ovo; } javna datoteka MessageBuilder (datoteka datoteke) {this.file = datoteka; verifyTextOrFile (); vrati ovo; } private void verifyTextOrFile () {if (text! = null && file! = null) {throw new IllegalStateException ("Nije moguće poslati 'tekst' i 'datoteku'."); }}}
Imajte na umu da nismo morali prijaviti pošiljatelja i primatelj članova ili s njima povezane metode graditelja. Lombok će ih i dalje generirati za nas.
Ako pokušamo generirati Poruka primjer s tekstom i datotekom sa sljedećim kodom:
Poruka poruke = Message.builder () .sender ("[email protected]") .recipient ("[email protected]") .text ("Kako ste danas?") .File (nova datoteka ("/ put / do / datoteka ")) .build ();
Rezultat će biti sljedeća iznimka:
Iznimka u niti "main" java.lang.IllegalStateException: Nije moguće poslati 'tekst' i 'datoteku'.
5. Zaključak
U ovom smo kratkom članku pogledali kako prilagoditi graditelj Lombok.
Kao i uvijek, kôd je dostupan na GitHub-u.