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

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

1. introduction

Project Lombok est une bibliothèque populaire pour réduire le standard Java.

Dans ce rapide didacticiel, nous allons voir comment l’annotation@Getter de Lombok fonctionne sur les champs booléens afin d’éviter de créer les méthodes getter correspondantes.

2. Dépendance Maven

Commençons par ajouterProject Lombok à nospom.xml:


    org.projectlombok
    lombok
    1.18.2

3. Utilisation de @Getter sur un champboolean

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 sesannotation processor pour générer une méthodeisRunning() 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 champboolean 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 compliqué si Lombok créait une méthode appeléeisIsRunning.

Au lieu de cela, Lombok crée desisRunningcomme avant:

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

3.2. Deux champsboolean 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 plusieurs raisons pour lesquelles nous devrions éviter une convention de nommage 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 va créer 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 surrunning,  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 champBoolean

Maintenant, Lombok traite le stypeBoolean un peu différemment.

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

@Getter
private Boolean running;

Au lieu de créerisRunning, Lombok généreragetRunning:

@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 vérifier les échantillonsover on Github.