Lombok how to customise getter for Boolean object field?

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

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

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.


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!)


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

Tags:

Java

Lombok