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.


$config[zx-auto] not found$config[zx-overlay] not found