Utilizzo di @Getter di Lombok per i campi booleani

1. Introduzione

Project Lombok è una popolare libreria per ridurre il boilerplate Java.

In questo rapido tutorial, daremo un'occhiata a come funziona l' annotazione @Getter di Lombok sui campi booleani per eliminare la necessità di creare i suoi metodi getter corrispondenti.

2. Dipendenza da Maven

Cominciamo aggiungendo Project Lombok al nostro pom.xml :

 org.projectlombok lombok 1.18.10 

3. Utilizzo di @Getter su un campo booleano

Diciamo che vogliamo che Lombok generi un metodo di accesso per il nostro campo booleano privato.

Possiamo annotare quel campo con @Getter :

@Getter private boolean running;

E Lombok utilizzerà il suo processore di annotazioni per generare un metodo isRunning () nella classe.

E ora, possiamo fare riferimento ad esso, anche se non abbiamo scritto il metodo noi stessi:

@Test public void whenBasicBooleanField_thenMethodNamePrefixedWithIsFollowedByFieldName() { LombokExamples lombokExamples = new LombokExamples(); assertFalse(lombokExamples.isRunning()); }

3.1. Un campo booleano che ha lo stesso nome del suo accessorio

Aggiungiamo un'altra riga di codice per rendere l'esempio un po 'complicato:

@Getter private boolean isRunning = true;

Sarebbe un po 'complicato se Lombok creasse un metodo chiamato isIsRunning .

Invece, Lombok crea isRunning come prima:

@Test public void whenBooleanFieldPrefixedWithIs_thenMethodNameIsSameAsFieldName() { LombokExamples lombokExamples = new LombokExamples(); assertTrue(lombokExamples.isRunning()); }

3.2. Due campi booleani con lo stesso nome di accesso

A volte possono esserci conflitti.

Diciamo che abbiamo bisogno delle seguenti righe nella stessa classe:

 @Getter public boolean running = true; @Getter public boolean isRunning = false;

Ci sono molte ragioni per cui dovremmo evitare una convenzione di denominazione confusa come questa. Uno di questi è che crea un conflitto per Lombok.

Utilizzando la convenzione di Lombok, questi due campi avrebbero lo stesso nome del metodo di accesso: isRunning . Ma avere due metodi con lo stesso nome nella stessa classe creerà un errore del compilatore.

Lombok risolve questo problema creando un solo metodo di accesso e, in questo caso, indicandolo in esecuzione, in base all'ordine di dichiarazione del campo:

@Test public void whenTwoBooleanFieldsCauseNamingConflict_thenLombokMapsToFirstDeclaredField() { LombokExamples lombokExamples = new LombokExamples(); assertTrue(lombokExamples.isRunning() == lombokExamples.running); assertFalse(lombokExamples.isRunning() == lombokExamples.isRunning); }

4. Utilizzo di @Getter su un campo booleano

Ora, Lombok tratta il tipo booleano in modo leggermente diverso.

Proviamo il nostro stesso esempio in esecuzione un'ultima volta, ma con Boolean invece del tipo primitivo:

@Getter private Boolean running;

Invece di creare isRunning , Lombok genererà getRunning :

@Test public void whenFieldOfBooleanType_thenLombokPrefixesMethodWithGetInsteadOfIs() { LombokExamples lombokExamples = new LombokExamples(); assertTrue(lombokExamples.getRunning()); }

5. conclusione

In questo articolo, abbiamo esplorato come utilizzare l'annotazione @Getter di Lombok per primitive booleane e oggetti booleani.

E assicurati di controllare gli esempi su Github.