Lombok Builder med Custom Setter

1. Introduksjon

Project Lombok er et populært Java-bibliotek som hjelper til med å redusere mengden kjelekode en utvikler trenger å skrive.

I denne opplæringen vil vi se på hvordan Lombok @Bygger merknader fungerer og hvordan vi kan tilpasse den til våre spesifikke behov.

2. Maven avhengighet

La oss starte med å legge avhengigheten til vår pom.xml:

 org.projectlombok lombok 1.18.10 

3. Lombok Bygger Kommentar

Før vi ser på å tilpasse Lomboks genererte byggeklasse, la oss gjøre et raskt sammendrag av hvordan Lombok @Bygger merknader fungerer. Vi har allerede en full introduksjon til Lomboks funksjoner.

De @Bygger merknader kan brukes til å automatisk generere en byggherre for klassen vår. For vårt eksempel bruker vi et meldingssystem der en bruker kan sende en melding til en annen bruker. Meldingen er enten en enkel tekststreng eller en Fil. Ved å bruke Lombok kan vi definere vår Beskjed klasse som følger:

@Builder @Data offentlig klasse Melding {privat strengavsender; privat streng mottaker; privat strengtekst; privat filfil; }

@Data genererer all kokeplaten som normalt er knyttet til et enkelt POJO (Plain Old Java Object): getters for alle felt, settere for alle ikke-endelige felt, og passende toString, er lik og hashCode implementeringer, og en konstruktør.

Ved hjelp av den genererte byggmesteren kan vi nå generere forekomster av vår Beskjed klasse:

Meldingsmelding = Message.builder () .sender ("[email protected]"). Mottaker ("[email protected]") .text ("Hvordan har du det i dag?") .Build ();

De @Bygger kommentar støtter også standardverdier for attributter, men vi går ikke inn på det nå. Det bør fremgå av dette eksemplet at @Bygger kommentar er ganske kraftig og kan erstatte mye kjelekode.

4. Tilpasse Lombok Builders

Den forrige delen viste hvordan vi kan bruke Lombok til å generere en byggeklasse. Men det kan være tilfeller der den genererte byggmesteren ikke er nok. I vårt eksempel har vi en begrensning på at meldingen bare kan inneholde enten tekst eller en fil. Det kan ikke ha begge deler. Lombok vet ikke det selvfølgelig, og den genererte byggmesteren vil gjerne tillate oss å komme inn i den ulovlige staten.

Heldigvis kan vi løse dette problemet ved å tilpasse byggherren.

Å tilpasse en Lombok-byggmester er enkel og grei: vi skriver delene av byggmesteren som vi ønsker å tilpasse og Lombok @Bygger merknader vil ganske enkelt ikke generere disse delene. Så i vårt eksempel vil det være:

offentlig statisk klasse MessageBuilder {privat strengtekst; privat filfil; offentlig MessageBuilder-tekst (strengtekst) {this.text = tekst; verifisereTextOrFile (); returner dette; } offentlig MessageBuilder-fil (filfil) {this.file = fil; verifisereTextOrFile (); returner dette; } privat ugyldig verifisereTextOrFile () {if (text! = null && file! = null) {kast ny IllegalStateException ("Kan ikke sende" tekst "og" fil "."); }}}

Vær oppmerksom på at vi ikke måtte erklære avsender og mottaker medlemmer, eller byggemetodene som er knyttet til dem. Lombok vil fremdeles generere de for oss.

Hvis vi prøver å generere en Beskjed forekomst med både tekst og en fil med følgende kode:

Meldingsmelding = Message.builder () .sender ("[email protected]"). Mottaker ("[email protected]") .text ("Hvordan har du det i dag?") .Fil (ny fil ("/ path / to / fil ")) .build ();

Det vil resultere i følgende unntak:

Unntak i tråden "hoved" java.lang.IllegalStateException: Kan ikke sende "tekst" og "fil".

5. Konklusjon

I denne raske artikkelen så vi på hvordan du kan tilpasse Lombok-byggherren.

Som alltid er koden tilgjengelig på GitHub.


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