Usando o @Getter para campos booleanos do Lombok

Usando o @Getter para campos booleanos do Lombok

1. Introdução

Project Lombok é uma biblioteca popular para reduzir o padrão Java.

Neste tutorial rápido, daremos uma olhada em como a anotação@Getter do Lombok funciona em campos booleanos para remover a necessidade de criar seus métodos getter correspondentes.

2. Dependência do Maven

Vamos começar adicionandoProject Lombok ao nossopom.xml:


    org.projectlombok
    lombok
    1.18.2

3. Usando @Getter em um campoboolean

Digamos que queremos que o Lombok gere um método de acesso para nosso campo booleano privado.

Podemos anotar esse campo com@Getter:

@Getter
private boolean running;

E o Lombok usará seuannotation processor para gerar um métodoisRunning() na classe.

E agora, podemos nos referir a ele, embora não tenhamos escrito o método nós mesmos:

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

3.1. Campo Aboolean com o mesmo nome de seu acessador

Vamos adicionar outra linha de código para tornar o exemplo um pouco complicado:

@Getter
private boolean isRunning = true;

Seria um pouco complicado se o Lombok criasse um método chamadoisIsRunning.

Em vez disso, o Lombok criaisRunning como antes:

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

3.2. Dois camposboolean com o mesmo nome de acessador

Às vezes, pode haver conflitos.

Digamos que precisamos ter as seguintes linhas na mesma classe:

    @Getter
    public boolean running = true;

    @Getter
    public boolean isRunning = false;

Há muitas razões pelas quais devemos evitar uma convenção de nomes confusa como esta. Uma delas é que isso cria um conflito para Lombok.

Usando a convenção do Lombok, esses dois campos teriam o mesmo nome de método do acessador:isRunning. Mas ter dois métodos com o mesmo nome na mesma classe criará um erro do compilador.

O Lombok resolve isso criando apenas um método de acesso e, neste caso, apontando-o pararunning,  com base na ordem de declaração do campo:

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

4. Usando @Getter em um campoBoolean

Agora, o Lombok trata o tipoBoolean um pouco diferente.

Vamos tentar nosso mesmo exemplo de execução uma última vez, mas comBoolean instead do tipo primitivo:

@Getter
private Boolean running;

Em vez de criarisRunning, o Lombok gerarágetRunning:

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

5. Conclusão

Neste artigo, exploramos como usar a anotação @Getter do Lombok para primitivos booleanos e objetos booleanos.

E certifique-se de verificar as amostrasover on Github.