Lombok how to customise getter for Boolean object field?

JavaLombok

Java Problem Overview



One of my POJOs has a Boolean object field to permit NULLS in the database (a requirement). Is it possible to use the @Data Lombok annotation at class level yet override the getter for the Boolean field? The default it generates is getXXX method for the Boolean field. I wish to override it as isXXX()?

Thanks,
Paddy

Java Solutions


Solution 1 - Java

It's a bit verbose, but you can provide your own isXXX, and then use AccessLevel.NONE to tell Lombok not to generate the getXXX:

@Data
public class OneOfPaddysPojos {

    // ... other fields ...

    @Getter(AccessLevel.NONE)
    private Boolean XXX;

    public Boolean isXXX() {
        return XXX;
    }
}

(And hey, at least it's not quite as verbose as if you weren't using Lombok to begin with!)

Solution 2 - Java

I think if you switch your field from Boolean X to boolean X than lombok generate a getter isX() method.

Solution 3 - Java

I know the question is old but I will leave this for future references.

You have two options to override a Getter/Setter in your class.

One is the answer from [First Option response][1]

The other option is to simply define the getter/setter method and lombok will not automatically produce the specified method.

I tested it myself and it seems to work fine:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class ProductResponse {

    private UUID id;
    private String supplierId;
    private String sku;
    private String name;
    private String brand;
    private String imgUrl;
    private String description;
    private BigDecimal price;
    private Float quantity;
    private String unit;
    //@Getter(AccessLevel.NONE) //This means @Data will not produce a getter for this field so have to explicitly define it
    private Set<ProductTag> tags;
    
    //Here we override @Data getter with a different getter (return is different type)
    public List<UUID> getTags() {
    return     tags.stream().map(ProductTag::getId).collect(Collectors.toList());
    }
}

Here is also a reference from the development team comments: [Lombok's developer comment][2]

In my example I'm using the "override" feature for a Collection type but this can be used for any other type like Boolean in your case.

[1]: https://stackoverflow.com/a/18139888/1970214 "First option response" [2]: https://github.com/rzwitserloot/lombok/issues/1026#issuecomment-186325559

Solution 4 - Java

what is the name of boolean field? according to the lombok doc:

> A default getter simply returns the field, and is named getFoo if the > field is called foo (or isFoo if the field's type is boolean)

lombok will generate getter with name isXXX for your boolean field

Solution 5 - Java

From Lombok documentation:

> You can always manually disable getter/setter generation for any field by using the special AccessLevel.NONE access level. This lets you override the behaviour of a @Getter, @Setter or @Data annotation on a class.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionPaddyView Question on Stackoverflow
Solution 1 - JavaruakhView Answer on Stackoverflow
Solution 2 - JavakateView Answer on Stackoverflow
Solution 3 - JavaRafael R. S. RoblesView Answer on Stackoverflow
Solution 4 - JavaSeptemView Answer on Stackoverflow
Solution 5 - JavaGeorge KargakisView Answer on Stackoverflow