I just announced the new Spring Boot 2 material, coming in REST With Spring:


1. Introduction

Project Lombok is a popular library for reducing Java boilerplate.

In this quick tutorial, we’ll take a look at how Lombok’s @Getter annotation works on boolean fields to remove the need to create its corresponding getter methods.

2. Maven Dependency

Let’s start by adding Project Lombok to our pom.xml:


3. Using @Getter on a boolean Field

Let’s say that we want Lombok to generate an accessor method for our private boolean field.

We can annotate that field with @Getter:

private boolean running;

And Lombok will use its annotation processor to generate an isRunning() method in the class.

And now, we can refer to it, even though we haven’t written the method ourselves:

public void whenBasicBooleanField_thenMethodNamePrefixedWithIsFollowedByFieldName() {
    LombokExamples lombokExamples = new LombokExamples();

3.1. A boolean Field Having the Same Name as its Accessor

Let’s add another line of code to make the example a little bit tricky:

private boolean isRunning = true;

It’d be a bit cumbersome if Lombok created a method called isIsRunning.

Instead, Lombok creates isRunning like before:

public void whenBooleanFieldPrefixedWithIs_thenMethodNameIsSameAsFieldName() {
    LombokExamples lombokExamples = new LombokExamples();

3.2. Two boolean Fields with the Same Accessor Name

Sometimes, there can be conflicts.

Let’s say that we need to have the following lines in the same class:

    public boolean running = true;

    public boolean isRunning = false;

There are many reasons we should avoid a confusing naming convention like this. One of them is that it creates a conflict for Lombok.

Using Lombok’s convention, these two fields would have the same accessor method name: isRunning. But having two methods with the same name in the same class will create a compiler error.

Lombok solves this by creating only one accessor method and, in this case, pointing it at running, based on field declaration order:

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

4. Using @Getter on a Boolean Field

Now, Lombok treats the Boolean type just a bit differently.

Let’s try our same running example one last time, but with Boolean instead of the primitive type:

private Boolean running;

Instead of creating isRunning, Lombok will generate getRunning:

public void whenFieldOfBooleanType_thenLombokPrefixesMethodWithGetInsteadOfIs() {
    LombokExamples lombokExamples = new LombokExamples();

5. Conclusion

In this article, we explored how to use Lombok’s @Getter annotation for boolean primitives and Boolean objects.

And make sure to check out the samples over on Github.

I just announced the new Spring Boot 2 material, coming in REST With Spring: