Utilisation de @Getter de Lombok pour les champs booléens

1. Introduction

Project Lombok est une bibliothèque populaire pour réduire le passe-partout Java.

Dans ce rapide didacticiel, nous examinerons comment l' annotation @Getter de Lombok fonctionne sur les champs booléens pour supprimer le besoin de créer les méthodes getter correspondantes.

2. Dépendance de Maven

Commençons par ajouter Project Lombok à notre pom.xml :

 org.projectlombok lombok 1.18.10 

3. Utilisation de @Getter sur un champ booléen

Disons que nous voulons que Lombok génère une méthode d'accesseur pour notre champ booléen privé.

Nous pouvons annoter ce champ avec @Getter :

@Getter private boolean running;

Et Lombok utilisera son processeur d'annotations pour générer une méthode isRunning () dans la classe.

Et maintenant, nous pouvons nous y référer, même si nous n'avons pas écrit la méthode nous-mêmes:

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

3.1. Un champ booléen ayant le même nom que son accesseur

Ajoutons une autre ligne de code pour rendre l'exemple un peu délicat:

@Getter private boolean isRunning = true;

Ce serait un peu fastidieux si Lombok créait une méthode appelée isIsRunning .

Au lieu de cela, Lombok crée isRunning comme avant:

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

3.2. Deux champs booléens avec le même nom d'accesseur

Parfois, il peut y avoir des conflits.

Disons que nous devons avoir les lignes suivantes dans la même classe:

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

Il y a de nombreuses raisons pour lesquelles nous devrions éviter une convention de dénomination déroutante comme celle-ci. L'un d'eux est que cela crée un conflit pour Lombok.

En utilisant la convention de Lombok, ces deux champs auraient le même nom de méthode d'accesseur: isRunning . Mais avoir deux méthodes avec le même nom dans la même classe créera une erreur de compilation.

Lombok résout ce problème en créant une seule méthode d'accesseur et, dans ce cas, en la pointant sur l' exécution, en fonction de l'ordre de déclaration des champs:

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

4. Utilisation de @Getter sur un champ booléen

Maintenant, Lombok traite le type booléen un peu différemment.

Essayons notre même exemple en cours d'exécution une dernière fois, mais avec Boolean au lieu du type primitif:

@Getter private Boolean running;

Au lieu de créer isRunning , Lombok générera getRunning :

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

5. Conclusion

Dans cet article, nous avons exploré comment utiliser l'annotation @Getter de Lombok pour les primitives booléennes et les objets booléens.

Et assurez-vous de consulter les exemples sur Github.