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.